Garbage Collector

Esta é uma questão bastante interessante contida no capitulo três (pag 275) do livro SCJP 6 (Kathy Sierra & Bert Bates)

 

 

11. Given:

3. class Beta { }

4. class Alpha {

5. static Beta b1;

6. Beta b2;

7. }

8. public class Tester {

9. public static void main(String[] args) {

10. Beta b1 = new Beta(); Beta b2 = new Beta();

11. Alpha a1 = new Alpha(); Alpha a2 = new Alpha();

12. a1.b1 = b1;

13. a1.b2 = b1;

14. a2.b2 = b2;

15. a1 = null; b1 = null; b2 = null;

16. // do stuff

17. }

18. }

When line 16 is reached, how many objects will be eligible for garbage collection?

A. 0

B. 1

C. 2

xD. 3 //Errado

E. 4

F. 5

 
 

Answer:

B is correct. It should be clear that there is still a reference to the object referred to by

a2, and that there is still a reference to the object referred to by a2.b2. What might be

less clear is that you can still access the other Beta object through the static variable

a2.b1—because it’s static.

 
 

Análise da resposta:

 
 

Na figura abaixo, as setas em vermelho representam as referências que foram anuladas. O objeto que está em laranja no heap é passível de ser coletado pelo GC (Garbage Collector).

 
 

 
 

 
 

 
 

 
 

 
 

Esta entrada foi publicada em Garbage Collector (GC) com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s