首页 > TAG信息列表 > 三色
CMS和G1的三色标记清理遗漏对象解决方案
why: CMS和G1都存在并发标记期间对象引用发生改变,从而导致部分白色对象标记不到(被视为了非活跃对象),被清理掉。 CMS和G1各自采用了不同的方案来解决。 例如: 引用关系改为:B->D的引用,改为了A->D和B->C。 how: CMS:incremental update算法 iCMS的三色标记
whate: 三色标记法,是把内存中的对象,标记为3种颜色,分布是:黑、灰、白。 黑:表示该对象已经扫描到,并且它可触达的对象也已经扫描到; 灰:表示该对象已经扫描到,但是它能触发的对象至少还有一个没有扫描到; 白:表示该节点没有被扫描到; where: CMS的三色标记发生并发标记并发可达性分析-三色标记法
在3.2节中曾经提到了当前主流编程语言的垃圾收集器基本上都是依靠可达性分析算法来判定对象 是否存活的,可达性分析算法理论上要求全过程都基于一个能保障一致性的快照中才能够进行分析, 这意味着必须全程冻结用户线程的运行。在根节点枚举(见3.4.1节)这个步骤中,由于GC Roots相比 起整