Bonjour,
Quelqu'un saurait-il m'expliquer le rôle de la méthode finalize() ?
Merci d'avance pour votre aide.
Bonjour,
Quelqu'un saurait-il m'expliquer le rôle de la méthode finalize() ?
Merci d'avance pour votre aide.
Salut,
La méthode finalize est héritée de Object et correspond à un mécanisme interne de Java.
Le ramasse-miettes (garbage collector) a pour objectif de libérer les objets sans référence de la mémoire. Il faut comprendre par cela, les objets qui ne sont plus utilisés et qui utilisent de la mémoire à tord. Avant la libération d'un objet de la mémoire, la méthode finalize est appelé sur l'objet pour lui permettre de libérer explicitement les éventuelles ressources dépendantes. L'exemple souvent donné est la fermeture des flux (fichier, socket, ...) éventuellement non fermés.
Son utilisation est rarement requise et conseillée car la libération de telles ressources devraient être maîtrisées en amont. De plus, l'exécution de cette méthode est ni prédictible, ni fiable, c'est à la volonté de l'implémentation de la JVM ; il ne faut donc pas compter dessus.
Pour plus d'informations ...
http://docs.oracle.com/javase/specs/....html#jls-12.6
http://howtodoinjava.com/2012/10/31/...ethod-in-java/
Flo.
Ouais donc, réponse courte :
Aucun rôle, elle ne sert à rien.
Réponse longue :
À l'époque où elle a été faite, l'idée c'était au cas où on avait oublié un cas sur un objet qui devait absolument être traité avant d'être perdu, on pouvait mettre le traitement dans finalize().
Mais en réalité ça marche pas bien, et de toute façon si "on a oublié un cas" c'est que le code est pourri. Il suffit de pas oublier de cas. try est là pour ça.
Partager