2010-07-15 4 views
3

J'ai vu d'autres messages à ce sujet, mais il semble que lorsque je fais des appels ajax avec jquery encore et encore (toutes les 30 secondes dans mon cas), je reçois une fuite de mémoire. Passer d'un $ get à un $ post (bien que plus sécurisé aussi) réduit la taille - cela arrive toujours. Même si je ne fais rien dans la réponse.jQuery Ajax Fuites de mémoire

Vous avez des idées?

EDIT:

Voici le code - désolé de ne pas inclure la première fois ....

$.post("Home/GetDashboard", { monitorDate: monitorDate }, function(data) { 
    $.each(data, function() { 
     // this code has been removed to help isolate leak 
    }); 
}, 'json'); 

Cela entraînera une fuite de mémoire à chaque fois d'environ 50 kb. C'est donner ou prendre. J'ai beaucoup de code DOM dans la fonction $ .each() et quand je l'inclue, la fuite de mémoire saute à environ 100 ko à chaque appel. J'appelle cette fonction toutes les 30 secondes en utilisant les minuteurs jQuery.

J'utilisait la méthode .getJSON $, mais la fuite de mémoire avec qui ressemblait plus à 300 kb (beurk!)

+2

Une idée pourrait être: "C'est cassé" ... mais sérieusement, vous devriez vraiment poster votre code sinon la question est trop générale. Avez-vous essayé de tester l'ajax séparément afin de pouvoir dire que ce n'est pas un problème dans votre code? –

+0

rencontrez-vous cela dans tous les navigateurs? – Patricia

+0

L'attribut JQuery ajax: cache peut-il être la cause de cela? – Tommy

Répondre

2

Vous devez déterminer quel processus est de plus en plus. Si son ASP.NET alors vous pouvez exécuter un profileur de mémoire tel que ANTS. Si le processus de votre navigateur continue de croître, vous devez évaluer le DOM et savoir ce qu'il se passe avec un outil tel que FireBug.

+0

Inclus le code dans l'édition. Malheureusement pour moi, je travaille pour une entreprise et nous utilisons IE en exclusivité, alors que cela fonctionne ou non dans Firefox n'est pas pertinent. Je déteste IE tout autant que le gars suivant mais il a des menottes dorées sur moi. –

+0

Cela n'a aucun sens cependant, si ASP.NET est en quelque sorte une fuite, cela se refléterait sur le serveur, alors que le problème de l'OP est sur le navigateur. – kprobst

+0

Marquant cela comme la réponse en regardant en arrière, je suis plutôt sûr que c'était lié à un DOM en pleine croissance en quelque sorte. Les bons outils auraient dû le révéler. –

0

Nous avons vraiment besoin de preuves.

Pouvez-vous inclure des statistiques & captures d'écran? Quels navigateurs & OS parlez-vous?

Vous avez également besoin d'afficher du code, remplacez-vous de gros fragments du DOM? (Si vous utilisez des panneaux de mise à jour de merde enveloppés autour de grandes formes, alors c'est une possibilité réelle!) Si oui, comment le faites-vous?

Quel outil avez-vous utilisé pour trouver la (les) fuite (s)? Pouvez-vous recréer le problème sur jsbin ou jsfiddle?