Metodos Destrutores

8 respostas
L

Pessoal, comparando com o C++, existe um Java métodos destrutores que são resposáveis por desalocar a memoria utilizado por um objeto ou isso e feito mesmo pelo Garbage Collection?

Abraço a todos,

8 Respostas

R

Você pode forçar o garbage utilizando System.gc().

Além disso, você pode finalizar os objetos com o método finalize()… e se quiser ser mais estúpido, utilize o System.runFinalization() pra matar todos os objetos… hehehehe

J

Isso é feito automaticamente pelo Garbage Collector…

O metodo destrutor que existe é o finalize(), mas que na verdade nao destroi nada, ele só é executado quando o garbage collector remove o objeto da memoria, serve para que você execute uma ação qualquer antes que objeto seja destruído…

J

Olá, apenas para esclarecer, vc não pode forçar a execução do garbage collector. O System.gc é apenas uma sugestão para a JVM executar o CG se não houver nada melhor para fazer. O runFinalization tem comportamento semelhante. :slight_smile:

No mais, tome bastante cuidado ao implementar o metodo finalize. Vc pode encontrar uma boa leitura sobre o assunto no Effective Java:
http://java.sun.com/docs/books/effective/

valeuz…

M

Nunca vi motivos pra se implementar o finalize(). Não tem como saber quando ele será executado e se será executado.

T

Deixe isso para a JVM fazer.

ela sabe o que faz!!!

J

Há casos, mas apenas quando vc quer dar garantias de que um recurso será liberado caso a classe cliente se esqueça. Entretanto, o finalize não deve ser usado como solução principal para a liberação de recursos. Em caso de duvida, vale seguir a dica do teofilo, deixe a JVM cuidar disso para vc. Claro, vc pode dar uma ajuda removendo as refencias para objetos que não são mais usados.

valeuz…

M

“jack_-_ganzha”:

Há casos, mas apenas quando vc quer dar garantias de que um recurso será liberado caso a classe cliente se esqueça.

Não consegui imaginar um exemplo Jack :sad:

T

Não tem como garantir que o objeto seja “removido” no memento que vc queira.

o GC é “funcionário Publico” ele trabalha quando bem intente ele é autônimo no gerenciamento de objetos.

Você pode dizer para o JVM quem pode ser destruído.
Mas não tem como garantir que será destruído pelo GC hoje mesmo ou no ano que vem.

Criado 21 de julho de 2005
Ultima resposta 22 de jul. de 2005
Respostas 8
Participantes 6