Retour à la leçonMission
Mission : le composant qui ne se libère jamais de la mémoire
Diagnostiquer une fuite mémoire causée par un setInterval jamais nettoyé, et remplacer un cache non borné par une structure sûre.
Contexte
Le tableau de bord de Technologik affiche des widgets qui se créent et se détruisent souvent (changement d'onglet). Après une heure d'utilisation, l'outil de profiling mémoire du navigateur montre des dizaines de milliers d'entrées de tableau jamais libérées. Le code suspect :
js
class WidgetStats {
constructor() {
this.donnees = new Array(100_000).fill("data");
setInterval(() => console.log(this.donnees.length), 1000);
}
detruire() {
this.donnees = null; // le développeur pense que ça suffit
}
}Un second problème : un Map utilisé comme cache de résultats de calculs grossit indéfiniment, sans jamais rien supprimer, sur une session utilisateur de plusieurs heures.