元素过多的HTML内存使用情况

HTML memory usage with too many elements

本文关键字:用情 情况 内存 HTML 元素      更新时间:2023-09-26

当您使用Node.removeChild()时,它会返回给您已删除的节点。然后,如果需要,您可以将它再次附加到DOM上。因此,从逻辑上讲,它会留在记忆中,使之成为可能。你可以查看http://jsfiddle.net/6QtjD/.

我的疑问是:如果我删除了太多节点,并在本地将删除的节点设置为var,它将保留在内存中,直到页面更改或范围结束?

例如:如果我创建1000个节点,并每0.1秒删除所有节点。在10秒内,我的页面将使用内存中100.000个节点的空间?

function create1000() {
    var div, i;
    for(i=0; i<1000; i++) {
        div = document.createElement("div");
        div.innerText = i;
        document.body.appendChild(div);
        document.body.removeChild(div); 
    }
}
for(var i=0; i<10000; i+=100)
    setTimeout(create1000, i);

谢谢!

没有理由应该这样做,因为你没有抓住它,所以它应该是可收集的。

这些年来,不同浏览器的js实现中肯定存在各种各样的漏洞,但除非我看到明确的证据,否则我不会担心这种情况(如果得到明确的证据的话,我会自己尝试)。

当你甚至没有捕捉到document.body.removeChild()的返回值时,你可以99.9%地确信javascript实现会丢弃它,而不会将它保存在内存中,即使保证无法访问它。0.1%的怀疑是因为这是浏览器javascript引擎的内部细节,在这种情况下,你不能确定这个星球上是否存在泄露内存的浏览器。

相关文章: