所以可以说有两个类:
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。如何确保它们被删除。
注意:我在我的网络浏览器中写了所有这些,所以请原谅任何错误