IE中的jQuery DOM操作内存泄漏
在进行DOM操作时,我们在IE上发现了严重的内存泄漏。基本上,我们是这样做的:IE中的jQuery DOM操作内存泄漏,jquery,memory-leaks,dom-manipulation,Jquery,Memory Leaks,Dom Manipulation,在进行DOM操作时,我们在IE上发现了严重的内存泄漏。基本上,我们是这样做的: function updateTable(){ $.get('table.jsp', {}, function(data){ $('#dataTableContainer').empty().html($(data).find('#dataTable')); setTimeout(updateTable, 1000); }); } 每秒钟重复一次这个方法。从我们所能看
function updateTable(){
$.get('table.jsp', {}, function(data){
$('#dataTableContainer').empty().html($(data).find('#dataTable'));
setTimeout(updateTable, 1000);
});
}
每秒钟重复一次这个方法。从我们所能看到的情况来看,jQuery1.7.1的这种方法每10秒就会泄漏大约1Mb的内存(旧版本的情况更糟)
我们做错什么了吗?我们尝试了stackoverflow(Ex.)中已经发布的几种解决方案,但都没有成功。尝试以下方法:
function updateTable(){
$.get('table.jsp', function(data){
var dt = $(data).find('#dataTable').html()
$('#dataTableContainer').html(dt);
setTimeout(updateTable, 1000);
});
}
接收字符串或函数,而不是像您现在这样的查询对象。html方法将替换内容,因此无需使用该方法。尝试以下方法:
function updateTable(){
$.get('table.jsp', function(data){
var dt = $(data).find('#dataTable').html()
$('#dataTableContainer').html(dt);
setTimeout(updateTable, 1000);
});
}
接收字符串或函数,而不是像您现在这样的查询对象。html方法替换了内容,因此不需要使用该方法。我认为这不是问题所在,但我的印象是
$().html()
与$().empty().append()相同。您是否发现情况并非如此(或者您调用.empty()
函数是否还有其他原因)?我们可能必须查看其余的相关代码。@Patricia-jQuery的版本在这个问题上是正确的。出于某种原因,我将其理解为jQuery ui版本。我想我需要检查一下眼睛!事实上,我知道这是一句冒犯性的话,因为当我对它进行评论时,没有内存泄漏。我不认为这是问题所在,但我的印象是$().html()
与$().empty().append()相同。您是否发现情况并非如此(或者您调用.empty()
函数是否还有其他原因)?我们可能必须查看其余的相关代码。@Patricia-jQuery的版本在这个问题上是正确的。出于某种原因,我将其理解为jQuery ui版本。我想我需要检查一下眼睛!事实上,我知道这是一句冒犯的话,因为当我评论它时,没有内存泄漏。