CMS与G1算法

CMS过程
1.初始标记(stw)
2.并行标记(产生漏标)
3.重新标记(stw)
4.并行清除 (产生浮动垃圾 和 碎片)

G1: YGC+MixGC + FullGC(Serial Old)

MixGC过程:
1.初始标记(stw)
2.并行标记(产生漏标)
3.重新标记(stw)
4.并行筛选(移动并压缩)

G1:物理上不分区,逻辑上分为old,eden,servior, humous

Card Table: 记录哪些需要回收,实现采用Bitmap记录
G1中的CSet(Collection Set) : 表示需要清除的region
G1中的Rset(Remembers Set):记录对象的引用

优化G1:
思路: 减少FGC
1.扩张内存
2.提高CPU
3.降低MixGC阀值,默认是45%

三色标记: 分为黑、白、灰三个颜色
白色: 没有标记
灰色:自身已经标记,成员还没有标记
黑色:自身和成员都已经没有引用

基于漏标有两种解决方案:Increment Update(CMS) 和SATB(Snapshot at the begining)
CMS采用的是 Increament Update
G1: SATB
CMS与G1算法

为什么使用SATB?
SATB和RSet结合使用