java堆用于存储对象实例,只要不断地创建对象,并且保证GC ROOTS到对象之间有可达路径(满足JVM的垃圾回收算法:可达性算法)来避免垃圾回收这些对象,那么当对象数量到达最大的容量限制后就会抛出内存溢出异常;
参数含义:
-verbose:gc: 在控制台输出GC情况 -verbose:gc和-XX:+PrintGC 效果一样,写法不一样(不同见解可以留言)
-Xms20m: 堆空间的最小值20m
-Xmx20m:堆空间的最大值20m
-Xmn10m:新生代(年轻代)空间大小
-XX:+PrintGCDetails:开启GC日志
-XX:SurvivorRatio=8:设置Survivor区和eden的比 8 表示 Survivor:eden=2:8 即一个Survivor占年轻代的1/10
-XX:NewRatio=4: 新生代(eden*2)和老年代(不包括永久代)的比值 4表示 新生代:老年代=1:4,即年轻代占堆的1/5
异常 简单版代码:
异常详细版:
参数: -verbose:gc -Xms20m -Xmx20m -Xmn10m -XX:+PrintGCDetails -XX:SurvivorRatio=8