gpt4 book ai didi

java - 组合对象的垃圾收集

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:18 25 4
gpt4 key购买 nike

我有两个类(class)

Class A
{
//constructor
}

Class B
{
private A a;

public B()
{
a = new A();
}
}

假设我在我的代码中使用了 B [say b] 的对象,并且在我最终使用它之后,我将它设置为 null。我知道 B 的对象现在可用于垃圾回收。

我知道将 b 设置为 null 后,它将立即符合垃圾收集条件?但是A类型的对象呢?在我将 B 设置为 null 后,它是否可以立即 用于垃圾回收?还是 有资格进行垃圾收集在 B 被垃圾收集之后

理论上,在 B 被垃圾回收之前,a 仍然有对它的引用?那么 SUN JVM 编译器是否会在设置 b = null;

后立即检测到这一点?

最佳答案

GC 足够智能,可以跟踪对象图中的路径,以检查对某个对象的现有引用是否可达。它甚至可以检测循环(例如,在您的情况下,如果 b 持有对 a 的引用并且 a 持有对 b 的引用

关于java - 组合对象的垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5992406/

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