2.4.1 Java堆溢出
代码2-1,java堆内存溢出异常测试,HeapOOM.java
package cn.chapter2;
import java.util.ArrayList;
import java.util.List;
public class HeapOOM {
static class OOMObject{
}
public static void main(String[] args){
List<OOMObject> list = new ArrayList<OOMObject>();
while(true){
list.add(new OOMObject());
}
}
}
/**
* Vm args:-Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError
* 堆的最小值参数-Xms,堆的最大值参数-Xmx
* -XX:+HeapDumpOnOutOfMemoryError表示让虚拟机在出现内存异常时Dump出当前的内存堆转储快照
* -XX:HeapDumpPath:为快照文件位置
*/
设置参数:-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8(点击Run---->Run Configurations;选中刚刚建立的java程序HeapOOM.java,然后点击Arguments,在vm arguments中输入参数:-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8),如下图所示:
最后点击apply,然后点击run,有运行结果:
和书上的结果不太一样,没看明白运行结果。