Garbage Collector, finalize e VC! nada a vê! ... duvida, sobre o finalize()

Em fima… o livro da Kathy traduzido conseguiu ser confuso nesse ponto… ele fala que o finalize dos objetos serão executados exatamente 1 vez…

porem em outros pontos, fala que o finlize pode não ser executado… minha duvida é simples…

Pode acontecer, do programa terminar, e como GC não fazendo a coleta final? ai ele não executar o finalize() dos objetos na memoria antes do programa terminar, e assim não executar o finlize destes ??

Ou pode acontecer dele apagar o objeto, e mesmo assim não executar o finalize() nem se quer uma vez ??

pq sei que se o finalize for chamado 1 vez, pelo GC, ele não sera chamado novamente…

Pode. Se o programa terminar, não é preciso limpar a memória, o SO já faz isso…

O método finalize é executado quando o garbage collector determina que não tem mais referência para o objeto. Exemplo:

Seu programa fica em uma thread com loop infinito ou esperando por eventos… ou programa vai ficar “sempre no ar”, então sempre que um objeto for coletado por gc, o finalize vai ser executado.

Isso não pode. “Sempre vai chamar finalize”. Se é sempre é sempre uai… pq vc dúvida? rs… Vc é daqueles caras que “só acredita vendo”, hehehe faça um teste então…

Eu ate só acredito vendo ahuahau… mas não é esse o caso…

é pq a tradução do livro, pra variar, se contradiz… então não sabia em q trecho acreditar, em certas partes falava q sempre executava, em outros lugares falva q podia executar ate 1 vez, e em outrs falava q executava exatamente uma vez…

e a minha duvida se o programa ao fechar executava a limpeza, e se os códigos finalize poderiam ficar sem executar por conta disso…

e fora isso, se seria possivel apagar um objeto sem executar pelomenos 1 vez, por conta das contradições da tradução do livro…

mas agora esta esclarecido ^^… era como pensei…

  • executa sempre que o GC faz coleta (desde que respeite a regra de no maximo 1 vez o finalize é executado) …
  • e que o programa pode fechar sem fazer a coleta…