JProfiles分析OOM
1.给IDEA安装配置JProfiles
先在IDEA的File-setting–Plugins安装jprofiles,然后重启IDEA,再到官网下载JProfile,安装好后,到IDEA的File–setting–Tools找到Jprofile,找到对应的Jprofile.exe路径,如图:
再到出现OOM的类中设置VM options的参数
-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
-Xms:设置初始化分配内存的大小,默认1/16的电脑运行内存
-Xmx:设置最大分配内存,默认1/4的运行内存
2.分析OOM
//Dump
//-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryErrors
//-Xms:设置初始化分配内存的大小,默认1/16的电脑运行内存
//-Xmx:设置最大分配内存,默认1/4的运行内存
public class Test {
byte[] array = new byte[1024 * 1024];//1m
public static void main(String[] args) {
ArrayList<Test> list = new ArrayList<>();
int count = 0;
try {
while (true){
list.add(new Test());
count = count+1;
}
} catch (Error e) {
System.out.println("count:"+count);
e.printStackTrace();
}
}
}
输出结果
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid16160.hprof …
Heap dump file created [7767664 bytes in 0.011 secs]
count:6
java.lang.OutOfMemoryError: Java heap space
at com.JVM.demo02.Test.(Test.java:9)
at com.JVM.demo02.Test.main(Test.java:16)
从结果中可以看出已经dump到一个文件,找到这个文件后双击打开,如图
选中占用堆空间最大的一行再点击Thread Dump,如图
点击main,主线程即可看出哪些代码出现问题
如果要分析其他问题,依然设置参数-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
可看出哪些代码出现问题
如果要分析其他问题,依然设置参数-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
其中异常名OutOfMemoryError改变一下即可改变一下即可