【问题标题】:jQuery - Memory leak/garbage collection with .remove()/.after()jQuery - 使用 .remove()/.after() 进行内存泄漏/垃圾收集
【发布时间】:2013-08-05 18:20:25
【问题描述】:

在整个周末都打开我的浏览器窗口后,我今天早上带着一个已冲洗的 IE 来到办公室。我正在做一个每 30 秒更新一次的“统计”仪表板栏。

返回的是一个 html 字符串,作为一个完整的 xcontents

我将它附加到 DOM,在我的“真实”div #ajaxreturn 之后,它实际上包含其他东西。我希望它出现在它之后。

如果存在,将其从 dom 中删除。 将结果附加到 dom。

$(function(){
function getAD() {
    var request = $.ajax({  
        url: "getdashboard/"
        ,  type: "GET"              
        ,  cache: false
        ,  dataType: "html"
    });
    request.done(function(msg) {
        if($('#adminbar').length){
            $('#adminbar').remove();
        }
        $('#ajaxreturn').after(msg);
    });
}

//INIT AND RELOAD INTERVALS

//get DashBoard
getAD();
//and then look for updates every 30 seconds
var gb = setInterval(getAD,3000);
});

我的假设是这会破坏或将其发送到垃圾收集。但似乎并非如此。我每 30 秒向我的 IE 会话添加大约 15KB。

除了 remove() 之外,我还应该使用其他东西吗?

【问题讨论】:

    标签: jquery memory memory-leaks garbage jquery-after


    【解决方案1】:

    据我所知,jQuery 缓存所有内容并将其放入 $.cache

    您需要禁用缓存,使用:

    $.ajaxSetup({cache:false});

    jQuery.cache = {}

    Sizzle.selectors.cacheLength $.expr.cacheLength = 1 https://github.com/jquery/sizzle/wiki/Sizzle-Documentation#sizzleselectorscachelength--number

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2011-02-12
      • 2016-11-02
      相关资源
      最近更新 更多