1、G1是标记-压缩算法。
Mix gc触发条件是堆内存中老年代使用达到-XX:InitiatingHeapOccupancyPercent
。会首先经历并发标记周期 Concurrent Marking Cycle
,识别出高收益的老年代分区,然后会等一次YGC,然后才是mix gc(与YGC过程差不多)。
2、年轻代收集(YGC)的CSet容纳且容纳所有的年轻代分区,而混合收集(Mixed GC)会通过启发式算法,在老年代候选回收分区中,筛选出回收收益最高的分区添加到CSet中。
候选老年代分区的CSet准入条件,可以通过活跃度阈值-XX:G1MixedGCLiveThresholdPercent
(默认85%)进行设置,从而拦截那些回收开销巨大的对象;
同时,每次混合收集可以包含候选老年代分区,可根据CSet对堆的总大小占比-XX:G1OldCSetRegionThresholdPercent
(默认10%)设置数量上限。
3、G1并行标记不是所有的region都扫描,是基于响应目标计算的。从gc root 开始扫描RSet,收集CSet。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…