元素过多的HTML内存使用情况
HTML memory usage with too many elements
当您使用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引擎的内部细节,在这种情况下,你不能确定这个星球上是否存在泄露内存的浏览器。
相关文章:
- 在Widget代码中没有jQuery的情况下,用光标图像从左滑动到右
- 对于如何在没有modernizr的情况下用边界半径的功能检测检查来替换我的旧浏览器检查
- 如何在不使用插件的情况下用程序记录浏览器操作
- MIDI Javascript:如何在没有库的情况下用Javascript生成单个MIDI音符
- 你为什么要用!!在这种情况下的表达式中?AngularJS API.
- Javascript;Fabric-js:在这种情况下,如何在函数外调用对象
- 如何在没有jQuery的情况下用JavaScript打开JSON文件
- 用javascript计算内存使用情况
- 在没有一个表单的情况下用ENTER阻止提交
- 在不使用jQuery的情况下,用JavaScript将表转换为数组
- 如何在没有空函数的情况下用javascript实现对象组合
- 如何在没有for循环的情况下用JavaScript显示数组
- 如何在不使用JSON.stringify或JSON.parse的情况下用javascript克隆数组
- 在没有赋值的情况下用var在JavaScript中声明变量会消耗内存吗
- 如何在不刷新的情况下用javascript打开或关闭掩码/隐藏URL参数
- 在不影响其他元素的情况下,用Vue.js切换一个元素的类开/关最简单的方法是什么?
- 用2种情况找到一些变量的正确方法
- 如何在不影响其他模态的情况下用CSS改变模态的宽度?
- 为什么变量在一种情况下用单引号发送,而在另一种情况下不加引号
- 在Jquery's .unload已弃用的情况下,取消提交按钮文本设置的正确方法