2013-04-25 1 views
1

Можете ли вы объяснить этот ответ ..? Как я и ожидал ответа CСколько объектов имеет право на gc

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. } 

Какое утверждение верно в отношении объектов, на которые ссылается snoog, snooch и Буча сразу после строки 23 выполняет?

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 
+0

Запахи, как конкурс кодирования :) –

+3

Что такое остановка 'booch'? Я бы ожидал E. –

+0

Вы говорите, что ответ 'C', но вопрос, который вы поставили, говорит, что« E ». – SudoRahul

ответ

3

Эти два класса относятся друг к другу. Итак, когда создается snoog, вы также получаете booch и snooch. когда вы устанавливаете snoog = null;, booch и snooch имеют право на GC.

0

После строки 23 нет ссылки, указывающей на экземпляр Snoochy, созданный в строке 22. => Этот экземпляр может быть собран в мусор. Но этот экземпляр содержит ссылку на Boochy (см. Строку 13), к которой не существует других ссылок. =: это может быть также garbagecollected.

+0

Спасибо. ребята за ваш ответ ... поняли :) – Tez

 Смежные вопросы

  • Нет связанных вопросов^_^