Visual VM 定位OOM,FullGC使用方法

Visual VM 是一个JVM虚拟机可视化的工具,在JDK1.7以后自带

主要用于开发人员 排除错误,观察堆栈使用情况 

它的路径在JDK的bin路径下,双击打开

Visual VM 定位OOM,FullGC使用方法_第1张图片

 打开结果如下

Visual VM 定位OOM,FullGC使用方法_第2张图片


总结一下定位OOM,FullGC使用方法大概步骤

  1. 设置JVM参数,打印日志
  2. 获取dump文件
  3. 通过VisualVM分析dump文件
  4. 修改代码验证

下面我们来模拟一次OOM

public class OOM {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        while (true){
            list.add(new Random().nextInt());
        }
    }
} 
  

内存溢出代码

 Visual VM 定位OOM,FullGC使用方法_第3张图片

-Xmx1024m

-Xms1024m

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=d:\dump                              //设置存储文件地址

设置堆转存储的位置

(这里堆转存储的意思大概是堆满了,将未完成的结果以文件的形式存储起来)

Visual VM 定位OOM,FullGC使用方法_第4张图片

打印的错误信息 


Visual VM 定位OOM,FullGC使用方法_第5张图片

 Visual VM 定位OOM,FullGC使用方法_第6张图片

打开Java VisualVM加载文件

Visual VM 定位OOM,FullGC使用方法_第7张图片可以确定到是 main 线程造成了OOM(定位线程) 

Visual VM 定位OOM,FullGC使用方法_第8张图片

 点击进入,可以查看到是那段代码出现了问题(定位代码段) 

你可能感兴趣的:(JVM虚拟机,jvm,java)