jQuery - 使用.remove()/。()之后的内存泄漏/垃圾回收

时间:2013-08-05 18:20:25

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

在整个周末离开我的浏览器窗口后,我今天早上来到办公室,带着一个软管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()之外,我应该使用其他东西吗?

1 个答案:

答案 0 :(得分:0)

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

您需要使用以下命令禁用缓存:

$.ajaxSetup({cache:false});

jQuery.cache = {}

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