SCJP 测试的问题

发布于 2024-08-14 15:02:02 字数 445 浏览 1 评论 0原文

SCJP 测试的问题:

 class A{
      A aob;
      public static void main(String args[]){
           A a=new A();
           A b=new A();
           A c=new A();
           a.aob=b;
           b.aob=a;
           c.aob=a.aob;
           A d=new A().aob=new A();
           c=b;
           c.aob=null;
           System.gc();
      } 
  }

问题:执行c.aob=null 后,有多少对象符合垃圾回收条件。

我认为是1,但正确答案是2。有什么问题吗?

Question from SCJP test:

 class A{
      A aob;
      public static void main(String args[]){
           A a=new A();
           A b=new A();
           A c=new A();
           a.aob=b;
           b.aob=a;
           c.aob=a.aob;
           A d=new A().aob=new A();
           c=b;
           c.aob=null;
           System.gc();
      } 
  }

Question: after c.aob=null is executed, how many objects are eligible for garbage collection.

I think that 1, but correct answer 2. What's wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

诺曦 2024-08-21 15:02:02

通过谷歌搜索,我找到了此线程

第一个对象是 c 最初引用的对象。

A a= new A();
A b= 新 A();
A c= 新 A();
a.aob=b;
b.aob=a;
c.aob=a.aob;
A d=新A().aob=新A();
c=b; //(1)

它在 (1) 时符合资格。

另一个符合GC条件的对象是at语句

A d=新 A().aob=新 A();

这里粗体文本中创建的对象将有资格进行GC。斜体文本中的对象将被分配给 d。

From Googling I found this thread.

The first object is the one referenced originally by c.

A a= new A();
A b= new A();
A c= new A();
a.aob=b;
b.aob=a;
c.aob=a.aob;
A d= new A().aob=new A();
c=b; //(1)

It becomes eligible at (1).

The other object eligible for GC is at statement

A d=new A().aob=new A();

Here the object created in the text in bold will be eligible for GC. The object in italicized text will be assigned to d.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文