Retour à la leçonMission
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.