Metodos Destrutores

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,

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

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…

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…

1 curtida

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

1 curtida

Deixe isso para a JVM fazer.

ela sabe o que faz!!!

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…

1 curtida

[quote=“jack_-_ganzha”]
Há casos, mas apenas quando vc quer dar garantias de que um recurso será liberado caso a classe cliente se esqueça.[/quote]

Não consegui imaginar um exemplo Jack :sad:

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.