Vous devez comprendre le flux de travaux Garbage Collector (GC) pour comprendre la fonction de finalisation. appeler .finalize() n'invoquera pas le garbage collector, ni n'appellera system.gc. En fait, ce que finalise aidera le codeur à déclarer la référence de l'objet comme "non référencé".
Le GC force une suspension sur l'opération de fonctionnement de la JVM, ce qui nuit aux performances. Pendant le fonctionnement, GC parcourra tous les objets référencés, à partir de l'objet racine (votre appel de méthode principal). Ce temps de suspension peut être diminué en déclarant les objets comme étant non référencés manuellement, car cela réduira les coûts d'opération pour déclarer la référence d'objet obsolète par l'exécution automatisée. En déclarant finalize(), le codeur met la référence à l'objet obsolète, ainsi lors de la prochaine exécution du fonctionnement du GC, GC run balayera les objets sans utiliser le temps de fonctionnement.
"Après que la méthode finalize a été invoquée pour un objet, aucune autre action n'est entreprise tant que la machine virtuelle Java n'a pas encore déterminé qu'il n'y a plus aucun moyen d'accéder à cet objet par un thread ayant pas encore mort, y compris les actions possibles par d'autres objets ou classes qui sont prêts à être finalisés, à quel point l'objet peut être supprimé. "à partir de Java API Doc sur java.Object.finalize();
Pour une explication détaillée, vous pouvez également vérifier: javabook.computerware