今天看了下OOM分析,但是例子是eclipse的,于是我用idea模仿了一个。
首先写一个简单的oom例子:
public class OOMTest {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
while (true){
list.add(new Person(1L, "", 1));
}
}
}
然后配置一下jvm启动项:


-Xms200m
-Xmx200m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./
运行main方法,就会发现程序报了oom错误,并打印出了文件名[java_pid8600.hprof],文件路径在jvm启动项自己设置,我设置的是项目根目录下:

然后就是分析文件了,网上的例子是用Eclipse Memory Analyzer,好像还得下eclipse,我嫌麻烦,就用了jdk自带的分析工具Jvisualvm,这个东西在jdk->bin目录下,双击运行jvisualvm.exe就好,然后点左上角的 文件->装入 选择我们的hprof文件,选择的时候需要切换文件类型:




到这里就差不多了,由于我也是初学,也只会这么多,有什么不对的地方欢迎大家指正,相互学习。