加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用AJAX的内存泄漏请求jQuery

发布时间:2020-12-16 02:55:40 所属栏目:百科 来源:网络整理
导读:我通过 AJAX调用反复从服务器获取 JSON对象.随着时间的推移,浏览器的内存使用量会增长(尝试使用Chrome,Safari,Firefox).使用Chrome的堆快照,我发现时间戳字符串没有引用.如果我拍摄一系列快照,我会看到字符串的数量不断增加. $(function() { var latestTimes
我通过 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();
});

其他说明:

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

解决方法

一旦你完成了数据[],你可以摆脱它:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读