FinalizationRegistry

JavaScript 🔴 Senior

Definition

API qui permet d'enregistrer un callback de nettoyage appele quand un objet observe est garbage-collecte. Companion de WeakRef pour le cleanup de ressources.

Analogie

Un notaire qui execute 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

Liberation 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 etre appele.
#core#avance#ES2021