FinalizationRegistry
JavaScript 🔴 SeniorDéfinition
API qui permet d'enregistrer un callback de nettoyage appelé quand un objet observe est garbage-collecte. Companion de WeakRef pour le cleanup de ressources.
Analogie
Un notaire qui exécute le testament (cleanup) quand la personne (objet) n'est plus la.
Exemple de code
const registry = new FinalizationRegistry((heldValue) => {
console.log(`Cleaned up: ${heldValue}`);
});
let obj = { heavy: new ArrayBuffer(1e6) };
registry.register(obj, 'heavy-buffer');
obj = null; // callback sera appele au GC
Cas d'usage
Libération de ressources externes (handles fichier, connexions) quand l'objet JS associe est GC.
Anti-pattern
Se baser sur FinalizationRegistry pour une logique critique : le callback peut ne jamais être appelé.