Je vois un bon usage pour finaliser(): libérer des ressources qui sont disponibles en grandes quantités et ne sont pas exclusifs. Par exemple, par défaut, 1024 handles de fichiers sont disponibles pour un processus Linux et environ 10000 pour Windows. Par défaut, C'est à peu près, donc pour la plupart des applications, si vous ouvrez un fichier, vous n'avez pas besoin d'appeler .close() (et d'utiliser les blocs try ... finally), et vous serez OK - enfin() Libérez-le pour vous quelque temps plus tard. Cependant, pour certaines parties de code (comme les applications serveur intensives), libérer des ressources avec .close() est un must, sinon finally() peut être appelé trop tard pour vous et vous risquez de manquer de handles de fichiers. La même technique est utilisée par Swing - les ressources du système d'exploitation pour afficher les fenêtres et le dessin ne sont pas libérées par une méthode .close(), mais simplement par finalize(), donc vous n'avez pas à vous soucier de tout. Les méthodes close() ou .dispose() comme dans SWT par exemple. Toutefois, lorsque le nombre de ressources est très limité ou que vous devez verrouiller la ressource pour l'utiliser, n'oubliez pas de la déverrouiller. Par exemple si vous créez un verrou de fichier sur un fichier, n'oubliez pas de supprimer ce verrou, sinon personne ne pourra lire ou écrire ce fichier et cela peut conduire à des blocages - alors vous ne pouvez pas compter sur finalize() pour supprimer cette serrure pour vous - vous devez le faire manuellement au bon endroit.
Vous pouvez l'utiliser comme butée de porte, ou une ancre de bateau :-) –
: D voulez-vous dire son assez lourd ou qu'il ne flotte pas? – Simeon