Finalize()

5 respostas
emanuell

Sei que nao é aconselhavel usá-lo.

Mas a pergunta é,

se o objeto é marcado para se coletado, quando o Garbage Collector for chamado (quando ele estiver disposta a isso), SEMPRE ele irá chamar o finalize() do objeto? (levando em conta que ele foi sobreescrito).

Na especificacao eu entendi que sim.

[]'s

5 Respostas

G

segundo a especificação da jvm é exatamente isso.

http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#19147

Andre_Brito

Dê uma lida nessa thread do JR:
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=33&t=025111

LPJava

o metodo finalize() é executado uma unica vez para um unico objeto!!

marcosbrandao

Não.

Ele não é SEMPRE executado. Ele executará somente da primeira vez.
Se no seu metodo finalize o seu codigo de alguma forma impedir que o objeto seja seja coletado. Na proxima vez que o GC tentar coletar seu objeto ele não vai executar o finalize.

marcosbrandao

Ops.[EDITADO]

Criado 9 de janeiro de 2008
Ultima resposta 9 de jan. de 2008
Respostas 5
Participantes 5