zoukankan      html  css  js  c++  java
  • Java VisualVM使用:堆OOM

    背景
    近期遇到了一个java.lang.OutOfMemoryError: Java heap space的问题,排除了堆设置过小的问题,代码走查没有头绪,所以使用VisualVM工具分析堆内存情况。之前有读过JVM相关的书籍,我知道此类问题可以使用这个工具定位和解决,但是是第一次遇到过这样的问题,所以要记录一次,每个第一次都是这么美妙。。

    堆OOM的堆快照如下:
    注:以下这是运行一段时间的快照
    visualVM_oom

    从上图中我们可以发现,随着时间的推移,堆内存是不断的递增的。然后我们分析一下内存情况:

    从图中可以发现,PrepareStatment的实例数非常多,根据代码的上下文判断这是不应该的,很明显存在资源没有释放的情况。最后跟踪底层代码发现,每次调用查询操作都会实例一个PrepareStatment对象,用过之后都没有关闭掉,随着慢慢的积压,产生了堆OOM。

    修正后的正常的快照如下:

  • 相关阅读:
    Django----路由控制
    Django-ORM的使用
    Django-ORM框架
    Django对数据库表的操作
    Python操作mysql
    [mysql]linux mysql 基础命令操作
    [mysql]linux mysql 读写分离
    [mysql]linux mysql 主从复制
    [mysql 1]linux mysal 安装
    [mysql]linux mysal 安装
  • 原文地址:https://www.cnblogs.com/liushijie/p/4830819.html
Copyright © 2011-2022 走看看