- 白 # 未被标记
- 灰 # 自身被遍历到,成员变量未被遍历到
- 黑 # 自身、成员变量都被遍历到
- 漏标问题
- 两个必要条件
- 黑引用白后,灰对白的引用断开
- 算法
- incremental update # 增量更新,关注引用的增加, CMS用的
- 增加引用后,标记为灰, 重新标记阶段再扫描
- 缺点是灰色还要重新扫描
- SATB snapshot at the beginning # 关注引用的删除, G1用的
- 开始时快照, 引用消失时,引用推到堆栈, 下次扫描还扫白色对象
- 优点是只扫描修改过的对象, 看RSet中有没有引用
- incremental update # 增量更新,关注引用的增加, CMS用的
- 两个必要条件