Se crio 10 objetos Objects dentro de um metodo e naum tem nenhuma referência global a esses objetos, num era p morrer depois de chamar o metodo naum ? E além disso o escopo é o laço "for", q é menor ainda.
blz?
Na verdade o objeto não morre automaticamente. O objeto é deixado disponível para o garbagge collector. Porém o garbagge collector será executado apenas quando o sistema operacional der prioridade na thread dele. Ou seja é impossível de determinar quantos objetos vão existir após a execução do código, visto que não podemos determinar quando o garbagge collector será executado.
Existe um comando (System.gc() que pede para o sistema operacional rodar o collector, porém não é garantia que será executado naquele momento.
Espero ter ajudado.
eduveks
Bem pelo q sei, não é possível determinar por q o Garbage Collection não limpa na hora.
Mais ou menos assim, tu executa o método, e ele coloca numa lista tudo q tem q ser removido da memória, mas não vai remover já, vai remover quando for uma boa altura, e ai começa a remover, mas pode não remover tudo de uma vez, depende, o Garbage Collection faz tudo de maneira a não influenciar o desempenho da aplicação, por isso ele vai fazendo estas tarefas nas brexas.
Qualquer coisa me corrijam por favor, tb não tenho a certeza absoluta se é assim, mas é a idéia q tenho.
T
thiagomont
Complementando a resposta do eduveks realmente não é possivel determinar quando será executado por ser uma thread de baixa prioridade.
Ao executar o System.gc() o sistema operacional é que vai determinar se será executado no mesmo momento ou não.
maquiavelbona
Só fazendo um adendo. Não há um padrão para execução do GC e mesmo quando “sugeres” a ele rodar, não há garantias que ele fará naquele momento. Os objetos só são recolhidos definitivamente na segunda vez que o mesmo rode. Na primeira vez, ele marca para coleta todos os objetos que podem ser coletados, na segunda vez ele executa o método finalize() do objeto e o recolhe logo em seguida. Se por algum motivo o método finalize não permitir o recolhimento do objeto (por exemplo, refazendo a referência do objeto), o método não é executado uma segunda vez, mesmo que o GC seja executado mais N vezes.
Para mais informações, procurar no fórum, na parte de Artigos/Tutoriais por Garbage Collector.