Je récupère à plusieurs reprises un objet JSON du serveur avec des appels AJAX. Au fil du temps, l'utilisation de la mémoire du navigateur grandit (essayé avec Chrome, safari, Firefox). En utilisant les instantanés de tas de Chrome, j'ai découvert que les cordes d'horodatage sont laissées sans références. Si je prends une séquence d'instantanés, je vois que le nombre de chaînes augmente continuellement. Autres notes: P>
horodatage code> de l'objet JSON est en réalité un entier, pas une chaîne. De sorte que les chaînes accumulées peuvent être des valeurs temporaires? LI>
+ DetReTTMESTAMP code> de la demande AJAX arrête la fuite. li>
3 Réponses :
Une fois que vous avez terminé avec des données [], vous pouvez vous en débarrasser:
function gotData(data) { latestTimestamp = data['timestamp']; delete data; setTimeout(fetchData, 250); }
Je viens de donner cela un essai, mais les instantanés de tas de Chrome montrent toujours un nombre constant croissant de chaînes entre instantanés.
Je crois que ce problème réside avec jQuery et / ou navigateur. J'ai vu des fuites similaires avec des appels souvent ajax. P>
au lieu d'interroger le serveur 4 fois une seconde envisagez de pousser les données du serveur au client. Je ne sais pas quelle plate-forme que vous utilisez, mais si c'est .net, vous voudrez peut-être jeter un coup d'œil sur Signalr P>
Eh bien, je n'utilise pas .NET, et le serveur que je travaille est personnalisé et écrit en C ++, mais peut-être que Real Server-to-Client Push est quelque chose que je devrais examiner.
Avez-vous essayé la fonction de CleartimeOut JavaScript? Sinon, essayez ceci.
@Vega fetchdata est déjà là dans le code;) (ligne 4)
Peut-être que JQuery préférera $ ..get ("/ paramètre", {format: "JSON", depuis: dactdTimetamp}, gotdata);
@nikoshr idée cool. Je viens de l'essayer, mais ça fuit encore.