minha resposta seria 2, pq esta setando null para t2 e dentro de t2 tem um Tahiti, porem a resposta certa é zero objetos, sera que alguém pode me explicar?
A referência do t2 continua viva, pois foi passada a outra variável.Assim o GC não coleta.
É importante ressaltar que as variáveis locais do método morrem no mesmo.Apenas as variáveis de instância permacem vivas na classe.
Que também é a chave da questão.
Nesse trecho do código, como a variável Tahiti t2 = new Tahiti(); foi declarada no método, ao final não terá mais os valores anteriores.
A
alexmonassa
Olá , de qual parte que ele está falando que os objetos estão elegíveis? depois q o programa acaba ou depois que o meotodo go termina?
giselezr
Quando acaba o programa. Mas ainda não consegui entender, por mesmo depois de setar a variável para outras no final das contas seta null…
rafadelnero
Os objetos continuam vivos, as referências é que morrem, ou seja apenas o controle que aponta para o objeto que está no heap.
A
alexmonassa
Realmente não entendi a questão, já que após o programa acabar 3 objetos estão elegíveis para GBC. pois nenhuma thread está disponível para alcançá-los, já que o thread da main já acabou… Deve ser de outro trecho que a questão esteja perguntando.
A definição de que um objeto poderá ser coletado para GB é que nenhuma thread viva consegue alcançá-lo. Daí vc faz um esquema com as variáveis e os objetos , e quem está apontando pra quem em determinado ponto. Depois disso vc ver quantos objetos estão “soltos”, sem nenhuma referência para ele .
F
fcoromoto
[quote=rafadelnero]A referência do t2 continua viva, pois foi passada a outra variável.Assim o GC não coleta.
É importante ressaltar que as variáveis locais do método morrem no mesmo.Apenas as variáveis de instância permacem vivas na classe.
Que também é a chave da questão.
Nesse trecho do código, como a variável Tahiti t2 = new Tahiti(); foi declarada no método, ao final não terá mais os valores anteriores.