Table des matières:
Définition - Que signifie Finaliser?
Finalize est une méthode objet qui contient le code requis pour libérer des ressources non managées et effectuer des opérations de nettoyage avant le garbage collection (GC).
La méthode finalize est utilisée pour nettoyer les ressources non gérées par .NET. Bien que le framework .NET soit conçu pour libérer des ressources gérées en effectuant implicitement des tâches de gestion de la mémoire, les ressources d'application non gérées - comme les descripteurs de fichiers et les connexions à la base de données - doivent être explicitement libérées.
Techopedia explique Finalize
Bien que finalize soit conçu pour être implicitement appelé par GC, la méthode dispose peut être explicitement appelée par le code utilisateur pour libérer des ressources.
Finalize est similaire aux destructeurs C ++ traditionnels, car chacun est responsable de la libération des ressources d'objet. Les destructeurs C ++ sont exécutés immédiatement lorsqu'un objet sort de la portée, tandis que finalize est appelé pendant le nettoyage de l'objet au GC. En C #, la finalisation ne peut pas être directement appelée ou remplacée. Si un destructeur est déclaré, il est converti en méthode finalize lors de la compilation du programme.
Lors de la finalisation, l'allocation de mémoire ou l'appel de méthodes virtuelles doit être évité. La portée de finalize doit être protégée afin qu'elle ne soit accessible qu'au sein de la même classe ou de sa classe dérivée. Finalize ne doit référencer aucun autre objet. En C #, l'appel de finalize directement sur un objet autre que sa classe de base est une opération non valide. Le code de finalisation doit être minimal sans aucun appel capable de bloquer le thread appelant. Comme finalize est appelé par un thread dédié, son code ne doit pas utiliser de stockage local de thread ou toute technique nécessitant une affinité de thread.
L'utilisation de finalize comme mécanisme de secours pour libérer de la mémoire ou des ressources non gérées est essentielle, en raison du manque de déterminisme et des effets sur les performances du GC.