2009-08-11 4 views
7

J'ai téléchargé le "Javascript Memory Leak Detector" pour IE mentionné ailleurs sur le SO et also here mais je n'arrive pas à comprendre comment l'utiliser. Apparemment, il y avait un autre post de blog qui est peut-être entré dans ce détail, mais le lien à partir du lien ci-dessus est cassé.Comment utiliser les détecteurs de fuite de mémoire Javascript IE7?

J'ai également essayé d'utiliser sIEve et il fait un travail assez décent, sauf que je ne peux pas obtenir la fonction "copie" pour fonctionner correctement. C'est-à-dire que j'aimerais copier les différentes statistiques pour pouvoir les manipuler hors ligne et préparer un rapport pour mon manager. Cependant, comme je le dis, il y a des problèmes avec la copie des données, et donc jusqu'à ce que je les signale aux développeurs, et s'ils règlent le problème, tout ce que je peux obtenir, ce sont des captures d'écran non interactives. Donc, je demande à la communauté SO comment ils utilisent les outils ci-dessus, ou s'ils connaissent d'autres outils faciles à utiliser pour mesurer les fuites de mémoire Javascript IE7, que je peux utiliser dans la préparation de rapports pour la gestion, par exemple. à partir de laquelle vous pouvez exporter des données brutes.

Merci à l'avance

Répondre

6

Voici ma propre expérience avec tamiser dans le env. 24 heures depuis que j'ai posé cette question. Il fournit de nombreuses données visuelles, bien que non-interactives, par ex. "lecture seulement". Il fournit un moyen de "copier" les données qu'il affiche dans ses différentes grilles "Show", dans mon cas "Show In Use". Cependant, la quantité de données obtenue lors du collage dans un document texte va bien au-delà de ce qui s'affiche réellement dans la grille et est carrément copieuse. Laissez-moi élaborer mon cas d'utilisation. Sieve n'indiquait pas de «fuites» en soi mais plutôt des «orphelins». Pour voir ce que cela signifie dans le langage SIEVE voir this page. Une fois que j'ai utilisé le navigateur sIEve pour accéder à la page qui m'intéressait, j'ai utilisé la fonctionnalité «Afficher en cours d'utilisation» pour afficher une grille avec environ 10 ou 12 champs. Les données de la colonne sont triables en cliquant sur l'en-tête, donc j'ai pu trier sur la colonne "Orphelin" puis sélectionner la rangée de lignes qui indiquait "Oui" puis cliquer sur "Copier"

Cependant j'ai posé cette question en premier lieu parce que Copy ne semblait pas fonctionner, ou s'est écrasé sIEve. J'ai continué à rencontrer ces problèmes environ un tiers ou la moitié du temps mais je suis resté persistant et j'ai finalement réussi à coller des données brutes dans un document.

Comme je l'ai mentionné la quantité de données brutes est copieuse. Donc, la seule chose que j'ai développée jusqu'à présent est une expression régulière pour compter les "records". Chaque enregistrement commence par une ligne telle que:

http://localhost:8086/yms_web/yardmanager.do (1 reference) 

Il sera toujours indiquer le nombre de références, c'est donc l'expression régulière, j'ai développé pour trouver ces lignes dans les données brutes; Je constate avec Cygwin pour cela:

$ egrep '\([0-9]+ reference[s]?\)' before_trailer_adjust_clicks.txt 
http://localhost:8086/yms_web/yardmanager.do (5 references) 
http://localhost:8086/yms_web/yardmanager.do (1 reference) 
http://localhost:8086/yms_web/yardmanager.do (2 references) 

Comme vous pouvez le voir le regex gère correctement la possibilité de références plurielles; Je ne l'ai pas vu gérer des cas où il y a des références à deux chiffres, mais je crois que c'est le cas.Dans tous les cas, en redirigeant la sortie ci-dessus vers wc -l, vous trouvez rapidement combien de lignes vous avez, donc dans mon cas, en capturant les données de la grille où "Orphan" égalait "Oui", et en faisant ce sur les requêtes HTTP successives, j'ai pu voir comment le nombre d'orphelins augmente, par exemple:

$ egrep '\([0-9]+ reference[s]?\)' before_trailer_adjust_clicks.txt | wc -l 
3 

$ egrep '\([0-9]+ reference[s]?\)' after_trailer_adjust_click.txt | wc -l 
4 

$ egrep '\([0-9]+ reference[s]?\)' after_create_rftask_click.txt | wc -l 
4 

$ egrep '\([0-9]+ reference[s]?\)' after_create_rftask_close.txt | wc -l 
66 

$ egrep '\([0-9]+ reference[s]?\)' after_trailer_adjust_close.txt | wc -l 
163 

Bien sûr, la commande egrep pourrait être appelé dans une boucle script bash sur les fichiers qui sont d'intérêt mais je Je ne suis pas encore allé si loin. En passant, c'est pour une application ExtJS et j'ai demandé sur leur forum et obtenu de bons conseils et a été en mesure de réduire considérablement le nombre d'orphelins!

Espérons que cela aidera les autres sur SO et je ne sais pas pourquoi cette question a été votée à être fermé

4

Link est pas à jour, donc je l'ai modifié pour aller à la root of the blog et a localisé l'article via les tags.

JavaScript Memory Leak Detector (v2)

+0

Merci. Je peux très bien «répondre» à ma propre question avec quelques commandes cygwin/ligne de commande que j'ai développées aujourd'hui pour analyser également les données de sIEve. –

+0

Cool! Oui, s'il vous plaît les poster. –

+0

J'ai essayé cet outil de détection de fuite de mémoire Javascript maintenant et j'ai conclu que sIEve est l'outil le plus utile pour moi au moins. Le premier contrairement à sIEve ne signifie pas A) les orphelins qui semblent définitivement être la cause de l'augmentation de la mémoire car une fois que je les ai atténués, la mémoire n'a pas augmenté comme auparavant, ou B) fournir la capacité de télécharger et de manipuler les données , au moins aussi loin que je peux voir –