堆空间常用参数设置
-
-XX:+PrintGCDetails 打印详细GC执行信息
- 打印简要GC信息 -XX: +PrintGC 或者 -verbose:gc
-
-XX:+PrintFlagsInitial 查看当前JVM所有参数的默认值
-
-XX:+PrintFlagsFinal 查看当前JVM所有参数的最终值(因为可能通过-XX修改过,在修改之后的参数之前会有一个冒号:)
-
-Xms: 初始堆空间大小 默认物理内存的1/64
-
-Xmx: 最大堆空间大小 默认物理你内存1/4
-
-Xmn: 设置新生代大小 初始值及最大值
-
-XX:NewRatio 配置新生代和老年代在堆空间的占比 默认2 新生代占1/3 老年代占2/3
-
-XX:SurvivorRatio 设置新声带Eden和S0/S1空间占比 默认为8 Eden8 S0/S1各占1
-
-XX:MaxTenuringThreshold: 设置新生代垃圾的最大年龄 默认15
-
-XX:HandlerPromotionFailue: 实收设置空间分配担保JDK7之后 参数不会在影响到虚拟机空间分配担保策略,JDK6 Update24 之后规则变为只要老年代连续空间大于新生代总大小或者历次晋升的平均大小就会进行Minor GC 否则进行FullGC
- 空间分配担保是在每次MinorGC之前,JVM会检查老年代中最大可用连续内存空间是否大于新生代所有对象的总空间
- 如果大于,则此时Minor GC安全
- 如果小于,JVM会查看-XX:HandlerPromotionFailure设置值是否允许担保失败
- HandlePromotionFailure=true,那么会继续检查老年代最大可用连续内存空间是否大于历次晋升到老年代的对象平均大小 (统计计算每一次MinorGC之后进入老年代的空间值,取一个平均值做比较)
- 如果大于,尝试进行一次Minor GC 但是此次MinorGC依然有风险
- 如果小于 直接进行FullGC
- HandlePromotionFailure=true,那么会继续检查老年代最大可用连续内存空间是否大于历次晋升到老年代的对象平均大小 (统计计算每一次MinorGC之后进入老年代的空间值,取一个平均值做比较)
- 空间分配担保是在每次MinorGC之前,JVM会检查老年代中最大可用连续内存空间是否大于新生代所有对象的总空间