漏标只有同时满足以下两个条件时才会发生:
条件一:灰色对象 断开了 白色对象的引用;即灰色对象 原来成员变量的引用 发生了变化。
条件二:黑色对象 重新引用了 该白色对象;即黑色对象 成员变量增加了 新的引用。
假设GC线程已经遍历到E(变为灰色了),用户线程直接将一个没有被任何人引用的H(白色)连接到D(黑色)上,不是一样可以产生漏标的效果么?为什么还需要条件一1?
漏标只有同时满足以下两个条件时才会发生:
条件一:灰色对象 断开了 白色对象的引用;即灰色对象 原来成员变量的引用 发生了变化。
条件二:黑色对象 重新引用了 该白色对象;即黑色对象 成员变量增加了 新的引用。
假设GC线程已经遍历到E(变为灰色了),用户线程直接将一个没有被任何人引用的H(白色)连接到D(黑色)上,不是一样可以产生漏标的效果么?为什么还需要条件一1?
3 回答2.5k 阅读✓ 已解决
1 回答1.7k 阅读
1 回答597 阅读