2010-01-26 6 views

Répondre

21

En ce qui concerne la consommation de mémoire

fuites de mémoire dans JavaScript sont généralement ignorés, sauf quand ils se transforment en des fuites de mémoire du navigateur (qui est, même après que l'utilisateur quitte la page, la mémoire continue allouée et il n'y a aucun moyen de la libérer). La raison en est que, même si votre application Web peut présenter des fuites de mémoire, les utilisateurs passent d'une page à une autre afin de réduire les fuites. Cependant, ils ne peuvent pas redémarrer le navigateur, les fuites de mémoire du navigateur peuvent être graves. Certains codes JavaScript sont connus pour causer des fuites de mémoire sur certains navigateurs, Internet Explorer étant probablement le pire dans ce domaine. Pour cela, vous pouvez trouver Microsoft JavaScript Memory Leak Detector très utile.

En ce qui concerne les temps

IE, Chrome et Safari ont construit dans les profileurs dans les outils de développement web livrés avec le navigateur. Pour Firefox, vous pouvez utiliser Firebug.Aussi utile que cela puisse être, puisque vous utilisez jQuery, ce qui signifie que votre rapport de profilage sera rempli de fonctions anonymes et similaires, ce qui le rendra tout à fait illisible, ce qui vous donnera un résultat plus clair sur le sujet.

+0

Merci beaucoup, je vais essayer le détecteur de fuite de mémoire pour IE. PS, le lien dans Ajaxian ne fonctionne plus, voici le lien de travail: http://blogs.msdn.com/gpde/pages/javascript-memory-leak-detector_v2.aspx – Eli

+1

Le lien de John Resig vers le script n'est plus travaux. – drewish

+0

L'hypothèse peut ne pas toujours être valide. Certaines pages resteront ouvertes longtemps, par exemple GMail ou Facebook, et le code JavaScript avec des fuites de mémoire apparaîtra rapidement. – MauganRa

0

Firebug ou Google Page Speed ​​pour Firefox ont des outils de profilage.

10

Utilisez Firebug. Pour citer le http://getfirebug.com/js.html:

Pour utiliser le profileur, allez dans l'onglet Console et cliquez sur le bouton "Profil". Ensuite, utilisez votre application pour un peu ou rechargez la page, puis cliquez à nouveau sur le bouton "Profil". Vous verrez alors un rapport détaillé qui montre quelles fonctions ont été appelées et combien de temps chacun a pris.

4

je suggère de jeter un oeil à la profileur dans Firebug, et le plug-in pour IE Drip pour aider à rechercher les fuites de mémoire. De plus, gardez à l'esprit que la plupart des fuites de mémoire JavaScript proviennent de références circulaires entre les objets DOM et les objets javascript qui ne sont pas rompus lorsque l'objet DOM est déchargé. Pour éviter cela, je suggère d'éviter de créer des références aux objets javascript dans les propriétés de l'objet DOM (c'est-à-dire d'éviter quelque chose comme document.getElementById('foo').bar = myObject;). Si vous devez créer ces références circulaires, veillez à les casser vous-même dans une fonction qui s'exécute lorsque la page est déchargée ou lorsque vous supprimez les objets DOM avant le déchargement.

1

Une autre manière simple de tester un morceau de code spécifique consiste à ajouter un temporisateur.

var testStart = new Date(); 

// code to be tested here 

$('#jstest').html("selected function: "+ (new Date() - testStart) + " milliseconds"); 

Où jstest est un élément span quelque part visible sur votre page.

2

Google Chrome a également des options profil

1

Bien que le chrome a des options de profilage intégré, il ne donne pas d'informations précises sur le object.So je préfère en utilisant un outil de recherche de fuite pour le javascript qui m'a aidé dans mon code.

https://code.google.com/p/leak-finder-for-javascript/

J'espère que cette aide.

+0

Vous êtes en retard un peu pour répondre à cette question, mais merci pour le lien intéressant –

Questions connexes