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

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

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

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

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

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

  • 相关阅读:
    每日一剂 14-6-6
    每日一剂 14-6-5
    每日一剂 14-6-4
    每日一剂 14-5-30
    Maven清理 .lastUpdated文件
    Docker 将项目做成镜像部署在docker中
    Docker 镜像拷贝到 正式环境运行
    Docker 安装 Tomcat
    Docker 安装 ActiveMq
    Docker 安装 nginx
  • 原文地址:https://www.cnblogs.com/liushijie/p/4830819.html
Copyright © 2011-2022 走看看