看《深入理解Java虚拟机》中的 并发的可达性分析-三色标记 提到黑色对象被误标记为白色需要同时满足两个条件:
- 赋值器插入了一条或多条从黑色对象到白色对象的新引用
- 赋值器删除了全部从灰色对象到该白色对象的直接或间接引用。
这里有点疑问,如果是新创建一个对象,然后黑色对象引用了这个对象,这种情况下这个新对象也是不会被标记为黑色对象的。
也就是不需要满足第二点,也能出现黑色对象(假设新创建的对象不应该被回收)被误标记为白色的情况了。
有没有大佬解释一下,很困惑现在。
看《深入理解Java虚拟机》中的 并发的可达性分析-三色标记 提到黑色对象被误标记为白色需要同时满足两个条件:
这里有点疑问,如果是新创建一个对象,然后黑色对象引用了这个对象,这种情况下这个新对象也是不会被标记为黑色对象的。
也就是不需要满足第二点,也能出现黑色对象(假设新创建的对象不应该被回收)被误标记为白色的情况了。
有没有大佬解释一下,很困惑现在。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
如果是新创建一个对象,然后黑色对象引用了这个对象,那么这个对象不就天然满足条件2?