最好能够快速找到代码第几行出错:
内存快照分析工具:MAT,Jprofiler

3.安装好应用即可。
举例说明,写一个OOM的情况
- package com.gao.test.JVM;
-
- import java.util.ArrayList;
-
- /**
- * @Author lie
- * @Description
- */
-
- /**
- * VM options:
- * -Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
- *
- * -Xms:初始化内存分配大小 (默认 1/64)
- * -Xmx:最大分配内存 (默认 1/4)
- * -XX:+PrintGCDetails 打印GC垃圾回收信息
- * -XX:+HeapDumpOnOutOfMemoryError 打印OOM信息
- */
-
- public class OomTest {
- byte[] array = new byte[1024 * 1024]; //1m
-
- public static void main(String[] args) {
- ArrayList
list = new ArrayList<>(); - int count = 0; //计数器
- try {
- while (true){
- list.add(new OomTest()); //问题所在
- count += 1;
- }
- }catch (Error e){ //要用ERROR捕捉OOM错误
- System.out.println("count = "+count); //打印创建了几个对象后OOM
- e.printStackTrace();
- }
-
- }
- }

运行后看看

dump出来的文件在这


用Jprofiler打开,分析并排查原因:


查看线程,找到问题所在
