O método finalize() deve ser evitado na implementação de uma...

Próximas questões
Com base no mesmo assunto
Ano: 2021 Banca: VUNESP Órgão: EsFCEx Prova: VUNESP - 2021 - EsFCEx - Informática |
Q1815182 Programação
O método finalize() deve ser evitado na implementação de uma classe Java, pois
Alternativas

Comentários

Veja os comentários dos nossos alunos

O coletor de lixo em Java, ao determinar que não há mais referências apontadas a um objeto, invoca um método da classe java.lang.Object desse objeto.  questão tirada do livro Deitel 8° edicao

Gabarito D

Você nunca deve usar o método FINALIZE(), porque ele pode causar muitos problemas e não há certeza se ele alguma vez será chamado antes de um programa terminar.

A intenção original de FINALIZE() era permitir que o coleto de lixo executasse a faxina de término em um objeto um pouco antes de reivindicar a memória ao objeto.

Agora, o que é considerado uma boa prática que qualquer classe que usa os recursos do sistema, como arquivos em disco, forneça um método que os programadores possam chamar para liberar os recursos quando eles não são mais necessários em um programa. EX: CLOSE() ou DISPOSE()

DEITEL, Paul; DEITEL Harvey. JAVA como Programar. 10.ed. [S.l.]: Pearson Prentice Hall, 2016. 

Pág 265

Finalize()

  • É chamado automaticamente antes que o coletor de lixo destrua o objeto 
  • DEVE ser evitado pois não é garantida e nem previsível. 
  • É possível inclusive que a JVM não os invoque nunca. 
  • Força a JVM a fazer trabalho extra e inibe um monte de otimizações, além de complicar bastante o gerenciamento de memória no Java.
  • incentiva uma má prática de programação.
  • A recomendação é não usá-lo nunca!

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo