gpt4 book ai didi

java - 对象之间是否可以通过相互引用使彼此“不可删除”?

转载 作者:行者123 更新时间:2023-12-01 05:16:37 25 4
gpt4 key购买 nike

因此,可以说有两个类:

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。如何确保将其删除。

注意:我在网络浏览器中编写了所有这些内容,因此请原谅任何错误

最佳答案

不。垃圾收集器不计算引用来知道对象是否可收集。如果对象无法通过来自任何根(静态变量或运行线程)的一连串强引用来访问,则该对象是可收集的。

关于java - 对象之间是否可以通过相互引用使彼此“不可删除”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17003739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com