Powtarzam pobieranie obiektu JSON z serwera przy użyciu wywołań AJAX. Z czasem rośnie wykorzystanie pamięci przeglądarki (wypróbowane w Chrome, Safari, Firefox). Korzystając z migawek sterty Chrome odkryłem, że ciągi znacznika czasu są pozostawione bez odnośników. Jeśli wykonam sekwencję migawek, widzę, że liczba Ciągów stale rośnie.Przeciek pamięci z żądaniami 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();
});
Inne uwagi:
- używam jQuery 1.7.1. EDYCJA: Próbowałem po prostu z 1.6.2 i 1.4.2, ten sam problem.
- Obiekt
timestamp
w obiekcie JSON jest w rzeczywistości liczbą całkowitą, a nie ciągiem. Czy więc akumulujące się struny mogą być wartościami tymczasowymi? - Usunięcie
+ latestTimestamp
z żądania AJAX zatrzymuje wyciek. - Szybszy setTimeout (20 ms) powoduje szybszy wyciek. Myślałem, że może to być szybki czas oczekiwania, więc zmniejszyłem go do 250 ms, ale to nie pomogło.
@Vega fetchData już istnieje w kodzie;) (linia 4) – Dave
Może JQuery wolą $ .get ("/", {parametr format: "json", ponieważ: latestTimestamp}, gotData); – nikoshr
@nikoshr Fajny pomysł. Po prostu próbowałem, ale wciąż przecieka. – Dave