2008-10-14 7 views
16

J'ai essayé de suivre celui-ci pour littéralement un mois maintenant sans aucun succès. J'ai ce morceau de code sur un site Web de publicité automobile qui permet essentiellement de faire pivoter les vignettes dans les résultats de recherche étant donné qu'une voiture a plusieurs images. Vous pouvez le voir en action à ce qui suit:Comment puis-je suivre et déboguer les fuites de mémoire JavaScript dans Firefox?

http://www.abcavendre.com/4506691919/

Il est construit sur le cadre mootools 1.2. Le problème est que ce script, sous Firefox 3, consomme une assez grande quantité de temps supplémentaire de mémoire lorsqu'une page est pleine de ces images tournantes, telles que cette page d'inventaire:

http://www.abcavendre.com/Vitrine/Israel_Huttman/

Vous pouvez voir la source du script en question ici:

http://www.abcavendre.com/scripts/showcase_small.js

Des idées sur ce qui cause la fuite de mémoire? La chose étrange est que ce code se comporte correctement sous IE7.

+0

L'avez-vous résolu? Si oui, quel était le problème? –

+0

Je n'ai pas réussi à le résoudre. Je reçois des informations précieuses de l'Addon Leak Monitor. Je travail encore dessus. –

+7

Désactiver Firebug si son activé de quelque façon. – leppie

Répondre

8

un moyen de suivre les fuites de mémoire dans Firefox est le Leak Monitor Addon. Il montre des fuites de mémoire de javascript (y compris les scripts d'extension).

Rappelez-vous que le plugin montrera parfois des objets qui ont fui et qui seront nettoyés plus tard par la collecte des ordures. Si tel est le cas, le plugin lancera une nouvelle fenêtre vous indiquant le nouveau statut.

+0

Vous avez manqué: après https, alors SO fait une curieuse URL en envoyant à TheEdge ... :-) – PhiLho

+0

Correction. Merci de nous avoir signalé;) –

+5

Étant donné que SO est un site en anglais, vous voudrez peut-être fournir un lien en anglais: https://addons.mozilla.org/en-US/firefox/addon/2490 –

0

Essayez éléments mise à zéro tableau de variables à la fin de l'initialisation fonction

... 

    if (ads.length > 0) 
     { 
     this.imagesFx = new Fx.Elements(elements, 
      { 
      wait: false, 
      duration: 1000 
      }); 
     this.moveNext.periodical(2500, this); 
     } 

    elements = null; //Add THIS! 
} 
+0

Cela n'expliquerait pas la fuite de mémoire qui se passe au fil du temps (sans rafraîchissement de la page) car la fonction initialize n'est appelée qu'une seule fois par page. –

+0

Essayez-le ... il ne fera pas mal –

+0

Je viens de le faire, pas de changement. –

0

Mise à jour de MooTools 1.2.1, nous avons amélioré la collecte des ordures et la gestion des fuites.