gpt4 book ai didi

java - 垃圾收集

转载 作者:行者123 更新时间:2023-11-29 05:31:55 25 4
gpt4 key购买 nike

我在一个 Java 转储中发现了这个问题,我想知道在 more code here 11 comment in the following code

之后有多少对象可用
public class Tahiti {
Tahiti t;
public static void main(String[] args) {
Tahiti t = new Tahiti();
Tahiti t2 = t.go(t);
t2 = null;
// more code here 11
}
Tahiti go(Tahiti t) {
Tahiti t1 = new Tahiti();
Tahiti t2 = new Tahiti();
t1.t = t2;
t2.t = t1;
t.t = t2;
return t1;
}
}

我的答案是一个,因为 main 方法下 t2 对象的对象引用已设置为 null,因此没有任何引用指向该对象,但我发现答案是 0

谁能帮我解决这个问题?谢谢

最佳答案

How many objects are available?

所有三个。 main 中的变量 t 直接指向第一个。该对象的 t 字段指向第二个对象,该对象在 go 方法中称为 t2。该对象的 t 字段指向第三个对象,在 go 方法中称为 t1

证明:

System.out.println(t);
System.out.println(t.t);
System.out.println(t.t.t);

假设 VM 设法为所有三个创建的对象提供唯一的哈希码(通常应该这样做),您应该会看到如下内容:

Tahiti@107ebe1
Tahiti@10f11b8
Tahiti@544ec1

您可以为对象提供一个 String name; 字段,以便更容易区分它们。

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

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