Estoy buscando repetidamente un objeto JSON del servidor con llamadas AJAX. Con el tiempo, el uso de memoria del navegador crece (probado con Chrome, Safari, Firefox). Utilizando las instantáneas de Heap de Chrome, he descubierto que las cadenas de marcas de tiempo se dejan sin referencias. Si tomo una secuencia de instantáneas, veo que el número de Cadenas aumenta continuamente.Fuga de memoria con solicitudes AJAX + jQuery
$(function() {
var latestTimestamp = 0;
function fetchData() {
$.get("/parameter?format=json&since=" + latestTimestamp, gotData)
}
function gotData(data) {
latestTimestamp = data['timestamp'];
setTimeout(fetchData, 250);
}
fetchData();
});
Otras notas:
- que estoy usando jQuery 1.7.1. EDITAR: Acabo de probar con 1.6.2 y 1.4.2, el mismo problema.
- El
timestamp
en el objeto JSON es en realidad un número entero, no una cadena. ¿Entonces las cadenas acumuladas pueden ser valores temporales? - Al eliminar
+ latestTimestamp
de la solicitud AJAX se detiene la fuga. - Un setTimeout (20ms) más rápido hace que la fuga sea más rápida. Pensé que el tiempo de espera rápido podría ser el culpable, así que lo reduje a 250ms, pero eso no ayudó.
@Vega fetchData ya está ahí en el código;) (línea 4) – Dave
Tal jQuery preferirán $ .get ("/ parámetro", {formato: "json", ya que: latestTimestamp}, gotData); – nikoshr
@nikoshr Buena idea. Lo intenté, pero sigue goteando. – Dave