web-dev-qa-db-fra.com

Outils de débogage des fuites de mémoire en JavaScript

J'ai un problème de fuite de mémoire dans un projet JavaScript assez complexe et j'espère qu'il existe des outils qui pourraient m'aider à identifier la cause du problème.

J'ai essayé l'onglet Profil de l'outil de développement Google Chrome, où je peux prendre des instantanés du fichier HEAP et le comparer aux instantanés précédents (voir http://www.youtube.com/GoogleDevelopers#p/c/B9EC47A6AAE4540F/1/OxW1dCjOstE). pour un démarrage rapide de cette fonctionnalité).

Je peux voir la mémoire s'épuiser avec cet outil, mais à partir de là, je ne peux pas trouver un moyen de détecter où les références à mes objets sont conservées (probablement dans des fermetures).

Ma question est la suivante: quels outils utilisez-vous pour le débogage des fuites de mémoire JavaScript? Y at-il un outil qui pourrait me laisser voir les références et un peu de code source de l'endroit où elles se trouvent?

51
Jerome WAGNER

Il me semble que je rencontre souvent ce problème et que je n'ai jamais vraiment de bonne réponse à part choisir des points d'arrêt intelligents dans votre javascript. Parfois, il existe un outil adapté à votre situation spécifique qui peut vous aider à trouver le problème, d'autres fois, le processus de recherche de la fuite est long.

Examinez le profileur Allocation dans Chrome DevTools, qui vous donne une interface utilisateur pour vos allocations, puis vous permet de revenir à leurs rétentions.

Voici une bonne liste d'outils de fuite pour Mozilla . De plus, il existe quelques screencasts sur la façon d'utiliser les outils . En particulier, la section "Post-traitement des traces de pile" pourrait vous intéresser, car elle mentionne la possibilité d'obtenir de meilleurs symboles et des informations sur le nom de fichier/numéro de ligne à partir d'une trace de pile.

Si vous utilisez Internet Explorer sous Windows, voici un détecteur de fuite de mémoire JavaScript qui pourrait également s’avérer utile.

Enfin, j’ai trouvé cet outil sympa sur github appelé MemoryLeakChecker après avoir lu un post here , qui recherche de grandes structures de données et essaie de vous aider à localiser votre fuite de mémoire.

J'espère que cela vous aide et laissez-moi savoir lequel (éventuellement) finira par vous aider. Désolé pour le manque d'hyperliens, car j'ai moins de 10 ans de réputation en ce moment, je ne peux pas tous les mettre dans le message.

34
bamana

Jetez un coup d'œil à https://addons.mozilla.org/en-US/firefox/addon/2490/ Je ne l'ai pas essayé, mais il semble avoir de bonnes caractéristiques.

0
Ankit Jaiswal

Vérifiez ceci -> http://ejohn.org/blog/deep-tracing-of-internet-Explorer/ Il ne fonctionne que sur IE bien que

Edit: Lien vers le produit -> http://ajax.dynatrace.com/ajax/en/

0
Suresh