bom tava olhando as questões que vem no fim de cada capitulo e tem uma aqui que eu nao concordo até ja re-li os capitulos que a envolvem…
bom la vai
class CardBoard {
Short story = 5;
CardBoard go(CardBoard cb) {
cb = null;
return cb;
}
public static void main(String[] args) {
CardBoard c1 = new CardBoard();
CardBoard c2 = new CardBoard();
CardBoard c3 = c1.go(c2);
c1 = null;
// do Stuff
} }
questão:
When // doStuff is reached, how many objects are eligible for GC?
respostas:
0
1
2
Compilation fails.
It is not possible to know.
An exception is thrown at runtime.
C is correct. Only one CardBoard object (c1) is eligible, but it has an associated Short wrapper object that is also eligible.
bom eu acertei ,mas minha explicação nao bate com a que ta ai…
pra mim os 2 objetos que ficariam elegivel seriam o c1 e o c3…
o c1 logo de cara não e nem duvida recebe um null no final…
o c3 e incializado apartir do retorno do metodo go chamado pelo c1, com o parametro do c2… oque retorna null ja que
cb = null; return cb;
o c2 fica imutavel mesmo sendo passado como parametro para o metodo go, o metodo nao pode alterar a variavel de referencia c2…
e quanto ao Short story creio que foi iniciado normalmente, e reside na memoria mesmo ele não sendo utilizado em nenhum momento…
e como podem ver o livro diz que seria o c1 e o Short associado a ele…
e agora escrevendo isso me veio outra duvida, eu tenho que levar em consideração todos os membros da classe?(oque pra mim faz sentido, ja que o membro foi iniciado com um objeto que resisdiu na memoria em algum momento e por consequencia do objeto que ele pertence nao ter mais referencia ele tambem nao o teria…) pq ai ao invez de 2 minha resposta teria que ser 4… ja que o c3 tem um Short associado a ele tambem…
e 4 nem tem ai :roll:
bom é isso ae valeu…