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

异常 简单版代码:

jvm 堆溢出

jvm 堆溢出jvm 堆溢出

jvm 堆溢出 

 异常详细版:

参数: -verbose:gc -Xms20m -Xmx20m -Xmn10m -XX:+PrintGCDetails -XX:SurvivorRatio=8

jvm 堆溢出

jvm 堆溢出

相关文章: