一个堆溢出的demo
作者:bin为了更快看到结果,我们将JVM的启动参数配置为:
-XX:+HeapDumpOnOutOfMemoryError -Xmx10m -Xms10m
相关代码
public class Part9 {
public static void main(String[] args) throws Exception{
List<String> list = new ArrayList<>();
while(true){
list.add(new String("test"));
System.out.println(list.size()
+ "--" + Runtime.getRuntime().totalMemory()/(1024*1024)+"M");
}
}
}
输出结果:
java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid22058.hprof ... Heap dump file created [14788857 bytes in 0.096 secs] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3210)
然后我们可以堆java_pid22058.hprof,进行分析,可以参考MAT:http://zengbingo.com/p/1570.html