ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
将当前的堆dump下来 ``` jmap -dump:live,format=b,file=dump.hprof 6515 ``` 将dump.hprof文件使用VisualVM来打开 ![](https://img.kancloud.cn/29/bd/29bd6d91be3af4253e5dbd6da41da4d6_1914x572.png) 1.将堆内存设置成20M,`-XX:+HeapDumpOnOutOfMemoryError`用于可以让虚拟机 在出现内存溢出异常的时候Dump出当前的内存堆转储快照以便进行事后分析。 \-Xms:表示初始化堆内存 \-Xmx:表示最大堆内存 \-XX:+HeapDumpOnOutOfMemoryError 表示jvm发生oom异常时,自动生成dump文件 \-XX:HeapDumpPath= 表示生成dump文件的存放目录 ~~~ /** * -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * * -XX:HeapDumpPath=F:\dump\ */ public class HeapOOM { static class OOMObject { } public static void main(String[] args) { List<OOMObject> list = new ArrayList<>(); while (true) { list.add(new OOMObject()); } } } ~~~ 输出错误信息 ``` java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid2860.hprof ... Heap dump file created [27976935 bytes in 0.078 secs] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3210) at java.util.Arrays.copyOf(Arrays.java:3181) at java.util.ArrayList.grow(ArrayList.java:267) at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:241) at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:233) at java.util.ArrayList.add(ArrayList.java:464) at com.tuna.test.jvm.HeapOOM.main(HeapOOM.java:13) ``` 产生dump文件 ![](https://img.kancloud.cn/1a/bb/1abbb6bde2b9642ccd8d4b4e28e0cad8_492x142.png)