年轻代进入老年代的时机:
1.对象年龄达到MaxTenuringThreshold阀值,默认是15,的时候对象进入老年代
2.一次MinorGC后,存活对象大小大于Servivor区,直接进入老年代,此时对象年龄不一定是15.
3.动态对象年龄判定规则,从年龄1+...年龄n的累加值大于CMSInitiatingOccupancyFraction的阀值,默认是68%(不同的虚拟机版本可能不同),那么年龄为n或者大于n的对象直接进入老年代。
4.大对象直接进入老年代。由参数PretenureSizeThreshold控制
JVM垃圾收集器及相关参数配置
参数说明:
UseserialGC : Client模式下,默认配置。打开此开关,表示Serial + Serial Old收集器的组合。
UseParNewGC : 表示ParNew + Serial Old收集器的组合。
UseConcMarkSweepGC : 表示ParNew + CMS + Serial Old收集器的组合。
UseParallelGC : 虚拟机Server模式下的默认设置,表示Parallel Scavenge + Serial Old收集器的组合。
UseParallelOldGC : 表示Parallel Scavenge + Parallel Old收集器的组合。
多用于Serial和ParNew的配置:
-XX : SurvivorRatio
-XX : PreturedSizeThreshold 大对象进入old区的临界值大小
-XX : MaxTenuringThreshold 对象经过多少次MinorGC后,进入老年代。默认是15
-XX : HandlePromotionFailure 允许分配担保失败
-XX : TargetSurvivorRatio 动态对象年龄达到该阀值,无须等到MaxTenuringThreshold进入老年代。
-XX : ParallelGCThreads 并行回收线程
用于parallel Scavenge的配置:
-XX : MaxGCPauseMillis GC暂停时间
-XX : GCTimeRatio 吞吐量
-XX : +UseAdaptiveSizePolicy 使用自适应大小调整策略,这是不需要配置SurvivorRatio和PreturedSizeThreshold等参数
用于CMS的配置:
-XX : CMSInitiatingOccupancyFraction CMS下老年代空间达到多大的值后进行GC,默认68%。
-XX:+UseCMSInitiatingOccupancyOnly 只是用设定的回收阈值,如果不指定,JVM仅在第一次使用设定值,后续则自动调整.
-XX : +UseCMSCompactAtFullCollection 默认开启,在进行FullGC时进行碎片化整理。
-XX : CMSFullGCsBeforeCompaction 默认是0,表示多少次FullGC后进行带碎片化整理的FullGC