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