内存泄漏与AJAX请求+ jQuery

Dav*_*dia 5 ajax jquery json memory-leaks

我通过AJAX调用反复从服务器获取JSON对象.随着时间的推移,浏览器的内存使用量会增长(尝试使用Chrome,Safari,Firefox).使用Chrome的堆快照,我发现时间戳字符串没有引用.如果我拍摄一系列快照,我会看到字符串的数量不断增加.

$(function() {
    var latestTimestamp = 0;

    function fetchData() {
        $.get("/parameter?format=json&since=" + latestTimestamp, gotData)
    }   

    function gotData(data) {
        latestTimestamp = data['timestamp'];
        setTimeout(fetchData, 250);
    }   

    fetchData();
});
Run Code Online (Sandbox Code Playgroud)

其他说明:

  • 我正在使用jQuery 1.7.1.编辑:刚试过1.6.2和1.4.2,同样的问题.
  • timestamp在JSON对象实际上是一个整数,而不是字符串.那么累积的字符串可能是临时值?
  • + latestTimestamp从AJAX请求中删除会阻止泄漏.
  • 更快的setTimeout(20ms)会导致泄漏更快.我认为快速超时可能是罪魁祸首,所以我把它减少到250毫秒,但这没有用.

Dav*_*ine 0

一旦你完成了 data[],你就可以删除它:

function gotData(data) {
    latestTimestamp = data['timestamp'];
    delete data;
    setTimeout(fetchData, 250);
} 
Run Code Online (Sandbox Code Playgroud)