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 ?
Réponses
Trop de publicités?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()
.
En finaliser() est appelée lorsqu'un objet est détruit.