一、主程序代码清单:
package sample.mybatis;
import java.util.ArrayList;
import java.util.List;
/**
* VM Args : -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
* Created by moxianbin on 17/8/27.
*/
public class HeapOOM {
static class OOMClass{}
public static void main(String[] args) {
List<OOMClass> list = new ArrayList<OOMClass>();
while (true){
list.add(new OOMClass());
}
}
}
二、设置Idea-JVM启动参数
-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/moxianbin/Documents/Java/heapdump.hprod
XX:HeapDumpPath是设置输出hprof文件的路径
三、运行结果:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid11047.hprof ...
Heap dump file created [28076157 bytes in 0.186 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:261)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
at java.util.ArrayList.add(ArrayList.java:458)
at sample.mybatis.HeapOOM.main(HeapOOM.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)