4 votes

Étape de nettoyage de Java

Dans java, je me souviens qu'il y avait une méthode que l'on pouvait surcharger pour qu'elle soit appelée lorsque le jvm quitte ou qu'une classe est détruite, presque comme une étape de nettoyage ? Quelqu'un sait comment elle s'appelle, je n'arrive pas à la trouver ?

10voto

krock Points 13537

Vous pouvez ajouter un crochet de fermeture qui sera appelé lorsque la JVM se terminera via Runtime.addShutdownHook() .

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        // ...
    }
});

Cependant, l'exécution des crochets d'arrêt n'est pas garantie si la JVM s'éteint anormalement.

Comme @Kaleb le souligne, vous pouvez surcharger Object.finalize() qui sera appelé lorsqu'un objet est éligible pour la collecte des ordures. Comme le souligne Josh Bloch dans Java efficace Point 7 :

Les finalistes sont imprévisibles, souvent dangereux et généralement inutiles.

suivi un peu plus bas par (souligné par Josh) :

Il peut s'écouler un temps arbitraire entre le moment où un objet devient inaccessible et le moment où son finalisateur est exécuté ... ne jamais faire quoi que ce soit de critique en termes de temps dans un finaliseur.

Si vous devez nettoyer les ressources d'une classe, faites-le dans un bloc finally ou mettez en œuvre une fonction close (ou similaire) au lieu de s'appuyer sur la méthode finalize() .

5voto

Kaleb Brasee Points 25776

En finaliser() est appelée lorsqu'un objet est détruit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X