Retour à la leçon
Mission

Mission : auditer un cache et une connexion basés sur le GC

Corriger une mauvaise utilisation de FinalizationRegistry pour une ressource critique, et combler une fuite silencieuse dans un cache à base de WeakRef.

Contexte

Un développeur écrit un cache d'images avec WeakRef, comme dans le cours, mais aussi une classe ConnexionBaseDeDonnees :

js
class ConnexionBaseDeDonnees {
    constructor() {
        this.ouverte = true;
        registre.register(this, "fermeture-connexion", this);
        // pense que ca suffit a fermer la connexion proprement le moment venu
    }
}

Par ailleurs, dans CacheFaible, chaque clé insérée dans la Map interne y reste indéfiniment, même quand la valeur associée a été collectée par le GC : seule la référence à l'intérieur (le WeakRef) devient inutile, mais la Map elle-même ne cesse jamais de grossir.