gpt4 book ai didi

java - 对垃圾收集感到困惑

转载 作者:行者123 更新时间:2023-12-02 18:04:34 26 4
gpt4 key购买 nike

在下面的代码中,执行第 7 行后有多少对象符合垃圾回收条件?在我看来,1 个对象 z 是合格的。是对的吗?

public class Tester 
{
public static void main(String[] args)
{

Integer x = new Integer(3000);
Integer y = new Integer(4000);
Integer z = new Integer(5000);

Object a = x;
x = y;
y = z;
z = null; //line 7
}
}

非常感谢。

最佳答案

不要将引用与对象混淆。对象是已创建的实际项目,引用只是引用它的名称。

您已经创建了三个对象,我们将它们分别称为 300040005000。您还按如下方式设置了引用:

Ref    Object
--- ------
x -> 3000
y -> 4000
z -> 5000

完成作业后,您最终会得到:

Ref    Object
--- ------
a -> 3000
x -> 4000
y -> 5000
z

因此,所有对象都不会受到垃圾回收的影响。每个人仍然有对其的引用。

<小时/>

相比之下,如果您要删除该行:

Object a = x;   

然后分配将导致:

Ref    Object
--- ------
3000
x -> 4000
y -> 5000
z

我们称为 3000对象将有资格进行垃圾回收,因为您不再有任何方式访问它。

<小时/>

而且,顺便说一句,您可能需要考虑这样一个事实,即创建自动垃圾收集的主要原因之一是使这些问题变得毫无意义:-)一般来说(尽管当然有异常(exception)),您应该不需要担心哪些对象需要收集。

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

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