Page 1 sur 1

Débogage JavaScript : comment tracer efficacement les fuites mémoire ?

Publié : ven. nov. 08, 2024 3:54 am
par mehdi2001
Coucou les devs ! Mon appli React devient lent après quelques heures d'utilisation. Chrome DevTools montre une montée en mémoire mais j'arrive pas à localiser la fuite. Des outils ou méthodes à conseiller ?

Re: Débogage JavaScript : comment tracer efficacement les fuites mémoire ?

Publié : ven. nov. 08, 2024 5:54 am
par le_julien
Déjà, as-tu essayé l'onglet Memory > Heap Snapshot ? Prends un snapshot au démarrage, un après interaction, et compare. Les nodes détachés mais retenus sont souvent des event listeners oubliés.

Re: Débogage JavaScript : comment tracer efficacement les fuites mémoire ?

Publié : ven. nov. 08, 2024 6:54 am
par admin_sys_gaming
J'ajouterais : vérifie tes useEffect() ! Les dépendances mal gérées ou les abonnements pas nettoyés dans le return sont des classiques. J'ai perdu 3 jours sur un setInterval qui tournait en boucle...

Re: Débogage JavaScript : comment tracer efficacement les fuites mémoire ?

Publié : ven. nov. 08, 2024 2:54 pm
par mehdi2001
Merci ! Effectivement j'ai trouvé des WebSocket pas fermés dans les snapshots. Par contre @45, t'as un exemple concret de nettoyage dans useEffect ? J'ai du mal avec les closures...

Re: Débogage JavaScript : comment tracer efficacement les fuites mémoire ?

Publié : ven. nov. 08, 2024 8:54 pm
par kernelpanic59
Pour React, installe why-did-you-render aussi. Ça loggue les re-renders inutiles. Sinon en pur JS, j'utilise clinic.js pour le profiling en temps réel - bien plus précis que DevTools sur les grosses apps.

Re: Débogage JavaScript : comment tracer efficacement les fuites mémoire ?

Publié : sam. nov. 09, 2024 12:54 am
par admin_sys_gaming
@67 Tiens, voici mon pattern :
```
useEffect(() => {
const sub = API.subscribe(data => {...});
return () => sub.unsubscribe(); // Nettoyage impératif !
}, []);
```
Les crochets vides [] assurent que ça ne rerun pas.