gpt4 book ai didi

java - 什么时候对象符合垃圾收集器的条件?

转载 作者:搜寻专家 更新时间:2023-11-01 01:27:59 25 4
gpt4 key购买 nike

考虑这个示例代码:

1.  public class GC {
2. private Object o;
3. private void doSomethingElse(Object obj) { o = obj; }
4. public void doSomething() {
5. Object o = new Object();
6. doSomethingElse(o);
7. o = new Object();
8. doSomethingElse(null);
9. o = null;
10. }
11. }

当doSomething方法被调用时,在哪一行之后创建的Object5 可用于垃圾收集?

一个。 5号线

B. 6号线

C. 7号线

D. 8号线

E. 9号线

F. 10号线

答案:D

为什么是 D?确实,当第 6 行执行时,第 5 行中创建的对象现在被实例 var o 和本地 var o 引用,而当第 8 行执行时,对象现在仅被本地 ref var o 引用,所以为什么答案是 D,第 9 行执行后会发生什么??谢谢。

最佳答案

这个问题让 IMO 感到困惑的主要原因是有 2 个变量名为 o。一个是实例变量 o,另一个是方法 doSomething() 中的局部变量 o

Time            instance var o    local var o
Before Line 5: null
Line 5: null Object#1
Line 6: Object#1 Object#1
Line 7: Object#1 Object#2
Line 8: null Object#2 <- No more references to Object#1

在第 8 行(或执行之后),Object#1 符合收集条件。

关于java - 什么时候对象符合垃圾收集器的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12182383/

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