面试官问我 三色标记原理我直接蒙了 - 须臾之余的个人空间 - OSCHINA - 中文开源技术交流社区 (面试官问我 三色标记原理我直接蒙了)
https://www.bilibili.com/video/BV1nA411T7W2?from=search&seid=17542793137333744742 (blibli马士兵讲解)
当且仅当以下两个条件同时满足:
赋值器插入了一条或多条从黑色对象到白色对象的新引用;
赋值器删除了全部从灰色对象到该白色对象的直接或间接引用。
解决的方法也是从这两个途径解决的:
CMS 基于 增量更新(Increamental Update)来做并发标记,G1 基于 原始快照(Snap shot At The Begining, SATB)来实现的。
CMS的就是破坏第一个条件,将黑-白这个引用关系的黑变灰色,重新扫描
G1破坏第二个条件,将灰-白这个要被删除的引用关系快照记录下来,在并发扫描结束之后,再将这些记录过得引用关系中的灰色对象为根,重新扫描一次。