有多少个对象符合gc的条件

时间:2013-04-25 06:32:12

标签: java garbage-collection scjp

请你解释一下这个答案..?正如我预期的那样回答C

 Given:
 11. class Snoochy {
 12. Boochy booch;
13. public Snoochy() { booch = new Boochy(this); }
14. }
15.
16. class Boochy {
17. Snoochy snooch;
18. public Boochy(Snoochy s) { snooch = s; }
19. }
And the statements:
21. public static void main(String[] args) {
22. Snoochy snoog = new Snoochy();
23. snoog = null;
24. // more code here
25. }

第23行执行后,snoog,snooch和booch引用的对象的说法是正确的吗?

   A. None of these objects are eligible for garbage collection.
   B. Only the object referenced by booch is eligible for garbage collection.
   C. Only the object referenced by snoog is eligible for garbage collection.
   D. Only the object referenced by snooch is eligible for garbage collection.
   E. The objects referenced by snooch and booch are eligible for garbage collection.

Answer: E

2 个答案:

答案 0 :(得分:3)

这两个类相互引用。因此,在创建snoog时,您还会获得boochsnooch。设置snoog = null;时,boochsnooch符合GC的条件。

答案 1 :(得分:0)

在第23行之后,没有任何引用指向第22行中创建的Snoochy实例。 =>这个实例可以被垃圾收集。 但是这个实例包含对Boochy的引用(参见第13行),其中没有其他引用。 =:这也可以被垃圾收集。