目标,配置idea参数,查看jvm中gc的详情
-Xms20m -Xmx20m -XX:+PrintGCDetails
测试代码
public class HeapOverFlowTest2 {
int[] intArr = new int[1024 * 128];
public static void main(String[] args) {
run();
}
public static void run() {
List<HeapOverFlowTest2> objs = new ArrayList<>();
for (;;) {
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
objs.add(new HeapOverFlowTest2());
}
}
}
在idea中配置启动参数:-Xms20m -Xmx20m -XX:+PrintGCDetails
查看结果
总结: 可以查看到,测试代码中,for循环中不停的往list集合中添加对象 会发现随着循环的进行。堆内存空间不够,触发了几次 GC ,但是发现都失败了
之后发生了几次 Full GC ,前几次 Full GC成功了,但是最后一次Full GC失败了,直接导致程序退出
|