假设有两个类:
public class A {
B reference = new B(this) //B isn't garbage collected because A references it
}
public class B {
A reference // A isn't garbage collected because B references it
public B(A ref) {
reference = ref;
}
}
然后第三类创建了一个新的
A
对象。当要摆脱它时,将该指针设置为null
。由于它们互相引用,A和B是否会导致一些奇怪的持久循环?它们彼此“保持活动状态”,因此都无法被收集。或者JVM太聪明了,意识到程序的其余部分不知道它们?感觉这可能会导致某种类型的内存泄漏。
如果可能的话,如何解决?双向引用在代码中非常常见。有许多情况下,对象1知道对象2,对象2知道对象1。如何确保它们被删除。
注意:我在网页浏览器中编写了所有这些内容,因此请原谅任何错误。