Então, galera eu fiz essa questão do ExamLab e achei 1 objeto elegivel para o GC mas a resposta oficial é 2
Não consegui achar o 2o!! To pra te dizer esse ExamLab é meio estranho, talvez eu tenha errado mesmo essa mas tinha questão com 2 respostas iguais certas , escolhi uma delas e recebi um errado! PQP! Na outra eu rodei o programinha igualzinho no eclipse e o resultado q eu tinha posto ( errado segundo o programa) era o certo!!
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();
}
}
class A{
A aob;
public static void main(String args[]){
A a=new A(); // 1o. objeto
A b=new A(); // 2o. objeto
A c=new A(); // 3o. objeto
a.aob=b; // a.aob aponta para o 2o. objeto
b.aob=a; // b.aob aponta para o 1o. objeto
c.aob=a.aob; // c.aob aponta para o 2o. objeto
A d=new A().aob=new A();
// new A().aob cria um 4o. objeto
// new A() cria um 5o. objeto
// 4o.aob aponta para o 5o. objeto
// d também aponta para o 5o. objeto
c=b; // c deixa de apontar para o 3o. objeto, e aponta para o 2o. objeto
c.aob=null; // c.aob deixa de apontar para o 2o. objeto
// Quando chegar aqui, não há referências diretas para o 3o. objeto,
// mas o 2o. objeto ainda é apontado por a.aob.
// Não há referências diretas para o 4o. objeto.
// A resposta seria 3 (1o. objeto, referido por a, 2o. objeto, referido por a.aob, e 5o. objeto,
// referido por d.
System.gc();
}
}
Nao entendi essa parte: objeto nomeado ‘d’ recebe a instância do 4 objeto, que dentro em ‘aob’ tem a instância do 5 objeto?
Se sim, no final seria 2 mesmo.
A d = new A().aob; // aqui d = null ! o objeto é usado apenas como "meio campo" para d apontar para a variavel de instancia aob, que é null.
d = new A(); //agora sim, d aponta para o 5o objeto.