美文网首页
JVM -- 分析Dump文件定位OOM问题

JVM -- 分析Dump文件定位OOM问题

作者: 花桥RHCDS | 来源:发表于2017-11-11 14:25 被阅读0次

一、目标
此文目的有二:1、学习如何去获取dump文件;2、如何通过分析dump文件定位程序中发生OOM之处。

二、准备工作
1、JVM参数设置:-XX:+HeapDumpOnOutOfMemoryError,即让程序遇到OOM时自动生成一份dump文件。
2、程序很简单:

    public  static void main(String[] args){
        List list = new ArrayList();
        while (true){
            list.add(2048*1024*2048);
            list.add("为了撑爆内存也是没办法啦~");
        }
    }

3、结果:

1510368156143.jpg

三、结果分析(jvisualvm)
dump分析工具有很多,但是适合MAC的比较少,但是有一款JDK自带的工具非常好用:jvisualvm。
直接在Iteam输入jvisualvm即可启动该工具,启动后页面如下:


1510368618330.jpg

然后再入dump文件(默认在当前目录,也就是工程目录下):


1510368871069.jpg

文件中首先展现的是各种基本信息,然后找到关键点--堆转储上的线程信息:


1510369012599.jpg
从里面可以清楚的获取到发生OOM的位置:首先发生OOM的线程是主线程“main”,最外com.egov.test.DumpMain.main(DumpMain.java:16),然后具体是java.util.ArrayList.add(ArrayList.java:458)
在添加对象时内存溢出。。。一层一层往内走,最终发现是在扩容时 java.util.Arrays.copyOf(Arrays.java:3210)

发生了OOM错误。

通过分析,我门准确定位到了错误发生的地方,接下来是猿们自己改逻辑代码了。

相关文章

  • JVM -- 分析Dump文件定位OOM问题

    一、目标此文目的有二:1、学习如何去获取dump文件;2、如何通过分析dump文件定位程序中发生OOM之处。 二、...

  • JVM系列:Dump文件的生成和分析

    概括 Dump包分析是JVM问题排查的杀手锏啦,直接定位到大对象所在的类,为问题排查提供最直接的指导 Dump文件...

  • 记一次线上OOM定位过程

    最近线上的一个app 经常oom,为了定位这个问题首先先搞到oom 的dump 文件 启动参数加上 -XX:+He...

  • JVM 在遇到OOM(OutOfMemoryError)时生成D

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips M...

  • 调优参数

    OOM时,自动生成DUMP文件 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapD...

  • OOM问题分析定位

    一 、问题描述 直接上图,这个是之前在测试环境上发现的问题,导致整个服务崩了。(心里暗喜,幸亏是测试环境啊,...

  • JVM Thread Dump 文件分析

    JAVA Thread Dump 文件分析 Thread Dump介绍 Thread Dump是非常有用的诊断Ja...

  • JVM内存分析

    获取JVM的dump文件 1、JVM启动时增加两个参数: Tomcat配置自动生产dump文件参考Tomcat性能...

  • 如何快速制造OOM

    为了验证JVM发生OOM时自动保存dump的参数配置是否正确,需要验证一下,所以有了这次的验证过程。 OOM OO...

  • 一分钟,教你如何迅速定位OOM

    如何迅速定位OOM 某Java服务(假设PID=10765)出现了OOM,如何快速定位? OOM常见原因分析 Ja...

网友评论

      本文标题:JVM -- 分析Dump文件定位OOM问题

      本文链接:https://www.haomeiwen.com/subject/lqdwmxtx.html