quando um objeto é elegível para um coletor de lixo?
considere este código de exemplo:
1. public class GC {
2. private Object o;
3. private void doSomethingElse(Object obj) { o = obj; }
4. public void doSomething() {
5. Object o = new Object();
6. doSomethingElse(o);
7. o = new Object();
8. doSomethingElse(null);
9. o = null;
10. }
11. }
Quando o método doSomething é chamado, após qual linha o objeto criado na linha 5 fica disponível para a coleta de lixo?
A. Linha 5
B. linha 6
C. linha 7
D. Linha 8
E. linha 9
F. Linha 10
Resposta: D
por que D? É verdade que quando a Linha 6 é executada o objeto criado na Linha 5 é agora referenciado pela instância var o e o varo local e quando a Linha 8 é executada o objeto agora é referenciado apenas pela referência local var o, então por que a resposta é D e o que acontece depois que a Linha 9 é executada? obrigado.