先写一段可以制造堆溢出的代码
package com.test.jvm.oom; import java.util.ArrayList; import java.util.List; /** * @date 2017年9月21日 * @Description: VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError */ public class HeapOOM { static class OOMObject { } public static void main(String[] args) { List<OOMObject> list = new ArrayList<OOMObject>(); while(true) { list.add(new OOMObject()); } } }
运行时参数如下
运行结果如下
此时,在该项目根目录路径下出现了hprof文件
接着下载eclipse memory analyzer,可以下载插件版或者standalone版本,由于我在marketplace中下载的时候,一直连接错误。最后无奈选择了独立版
在eclipse memory analyzer中,File -> Open Heap Dump,加载刚才产生的hprof文件,选择Leak Suspects Report
此时再回到项目根目录,发现有许多新生成的文件
和网上查到的略有不同,但至少zip文件还是有的。打开之后,就是一个html文档