Duvida em vida de um objeto

1 resposta
O

Vou supor um exemplo …

tenho no sistema 1 Objeto Usuario que é carregado logo na inicialização do programa quando é chamado a class CriaObjeto …
Tenho uma classe de interface gráfica que chama esse CriaObjeto e depois eu dou um dispose(); nela … o objeto ainda vai existir tranquilamente …

depois de um tempo ele vai deixar de existir se eu nao ficar mechendo com ele? devido o garbage desalocar ele da memoria? ou não vou perder as referencias desse objeto até fechar toda a aplicação?

1 Resposta

J

Um objeto é coletado pelo GC a partir do momento em que ele não tem mais referencias, ex.:

String str1 = "objeto1";
str1 = null;

String str2 = "objeto2";
String str3 = str2;
str2 = null;

Nesse caso o "objeto1" pode ser coletado pelo GC porque não há mais nenhuma referencia pra ele, já o "objeto2" não pode porque ainda há uma referencia (str3).

Então, se esse seu objeto Usuario vai existir enquanto existirem referencias para ele, a partir do momento em que todas as referencias são destruidas, o GC pode coleta-lo.

Sobre o que você disse a respeito de "mexer" com o objeto, o GC não vai coleta-lo enquanto você tiver um meio de acessa-lo (referencia), somente quando você não puder mais acessa-lo, ou seja, o objeto não vai sumir das suas mãos de uma hora pra outra.

Criado 3 de outubro de 2006
Ultima resposta 3 de out. de 2006
Respostas 1
Participantes 2