OOM思路分析:
- 使用-Xms1g -Xmx4g参数增加堆内存大小,启动程序。
- 如第一步之后还发生OOM异常,就定位了我们的代码有问题。
1、安装JProfiler(官网下载傻瓜式安装即可)
2、idea安装JProfiler插件
3、dump文件内存分析(如下是一段OOM测试代码)
public class Test03 {
byte[] arr = new byte[1024 * 1024];
public static void main(String[] args) {
// 如下是一段OOM异常代码
ArrayList<Test03> list = new ArrayList<>();
int count = 0;
try {
while (true) {
list.add(new Test03());
count++;
}
} catch (Exception e) {
System.out.println(count);
e.printStackTrace();
}
}
}
配置jvm参数(-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError),可自行调节大小
执行代码会抛出异常并生成.hprof后缀的文件
4、使用安装好的JProfiler工具打开dump下来的文件
点击线程按钮可具体知道是那一行代码出现问题