我重複從AJAX調用服務器獲取JSON對象。隨着時間的推移,瀏覽器的內存使用量不斷增加(通過Chrome,Safari,Firefox進行嘗試)。使用Chrome瀏覽器的堆快照,我發現時間戳字符串沒有引用。如果我拍攝一系列快照,我會看到字符串的數量不斷增加。內存泄漏與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();
});
其他說明:
- 我使用jQuery 1.7.1。編輯:剛剛嘗試1.6.2和1.4.2,同樣的問題。
- JSON對象中的
timestamp
實際上是一個整數,而不是一個字符串。所以積累的字符串可能是臨時值? - 從AJAX請求中刪除
+ latestTimestamp
即可停止泄漏。 - 更快的setTimeout(20ms)會導致泄漏更快。我認爲快速超時可能是責備,所以我把它縮短到250ms,但這沒有幫助。
@Vega fetchData已經存在的代碼;)(第4行) – Dave 2012-04-12 16:32:43
也許jQuery將傾向於$獲得( 「/參數」,{格式爲: 「JSON」,因爲:latestTimestamp},gotData); – nikoshr 2012-04-12 17:09:32
@nikoshr很酷的想法。剛剛嘗試過,但仍然泄漏。 – Dave 2012-04-12 18:20:31