gpt4 book ai didi

java - 调用 new Object( );两次使第一次调用创建的对象符合垃圾收集条件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:18 24 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() 方法被调用时,第 5 行创建的 Object 在哪一行之后可用于垃圾回收?

正确答案是第 8 行。

这是为什么呢?我觉得应该是第7行,因为new会发起一个新的Object,然后赋值给o,这样就产生了第5行创建的Object失去它的引用(然后有资格获得 GC)。我错了吗?

最佳答案

The correct answer is Line 8. Why is that?

您将 doSomething() 的本地 o 与类级别的 o 混淆了。即使第 7 行将 o 的 doSomething() 版本设置为其他引用,您仍然拥有通过 doSomethingElse() 设置的类级 o 方法。您必须使该引用为 null 才能使其符合 GC 条件,而这只会在第 8 行的方法调用中发生。

关于java - 调用 new Object( );两次使第一次调用创建的对象符合垃圾收集条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27877947/

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