gpt4 book ai didi

没有引用对象时的 Java 垃圾回收

转载 作者:行者123 更新时间:2023-12-01 12:27:27 24 4
gpt4 key购买 nike

例如使用以下代码,

class Dog {
Dog parent;
Dog (Dog parent) {
this.parent = parent;
}

Dog makeDog (Dog dog) {
return new Dog(new Dog(new Dog(dog)));
}
}

public class test {
public static void main(String[] args) {
Dog dog = new Dog(null);
dog = dog.makeDog(dog);
Dog anotherDog = new Dog(dog);
/*
* many lines of code
*/
if (anotherDog.parent.parent.parent.parent.parent == null) {
System.out.println("null");
}
}
}

这个程序保证打印 null 吗?

我的大部分程序都是用 C 编写的,这就是我构建链表、树、图等的方式。但我真的不确定Java垃圾收集器会如何处理这样的代码,所以在实际程序中,我选择将引用存储在其他地方,这样GC就可以知道这些对象确实不是垃圾。

欢迎任何帮助。

最佳答案

只要一个对象可以通过 GC 根(线程堆栈或静态变量)的强引用链到达,它就不会被垃圾收集。到达对象的路径有多复杂并不重要。

关于没有引用对象时的 Java 垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26204274/

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