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,
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.
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…
Nunca vi motivos pra se implementar o finalize(). Não tem como saber quando ele será executado e se será executado.
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…
[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.