-
通常采用方案:发生A对象(黑色集合)指向D对象(白色集合)时候,直接将D对象标灰(业务线程运行,一旦发生黑色标记指向白色标记,则将白色标记置灰)
CMS漏标解决 -
上述解决方案产生问题
2.1 垃圾回收线程m1 正在标记对象A,标记完成A对象的属性1,正在标记对象A的属性2,此时A为灰色。
2.2 m1线程暂停,业务线程m2运行,m2把属性1指向白色对象D,m2暂停,m1运行
2.3 m1继续标记对象A的属性2,标记完成,A变为黑色,此时D对象仍是白色,漏标。 -
CMS最终解决方案
在最后阶段remark(重新标记)。重新扫描一遍(STW)
网友评论