如果对象 a 和 b 只有相互引用,GC 会收集它们吗?您能否帮助解释原因或提供参考文档来解释该逻辑。非常感谢
问问题
183 次
2 回答
6
是的,如果不存在对 GC 的更强有力的引用,他们将成为 GC 的候选者。
重要的是要注意,不仅仅是任何强引用都会在内存中保存一个对象。这些必须是从垃圾收集根链接的引用。GC 根是一类特殊的变量,包括:
- 堆栈上的临时变量(任何线程的)
- 静态变量(来自任何类)
- 来自 JNI 原生代码的特殊引用
请参阅此文档(§ A.3.4 Unreachable 和 §A.4.2 Example GC with WeakReference)
于 2012-06-02T09:50:18.890 回答
4
如果对象 a 和 b 相互引用并且不干扰其他对象,则它们形成一个孤立的对象岛。这种组也被垃圾收集器收集。看看这个线程。
于 2012-06-02T09:47:21.447 回答