javascript - JavaScript 中循环引用会导致内存泄漏吗?

标签 javascript debugging browser memory-leaks cross-browser

我读过很多声明,指出循环引用会导致内存泄漏:

所以我在 Chrome/FF4/IE9/Opera/Safari 上测试了这个脚本:

<script>
var a, b, list = [];

for(var x=0;x<1000000;x+=2){
    a = list[x] = document.createElement("div");
    b = list[x + 1] = document.createElement("div");
    a.hook = b;
    b.hook = a;
}
</script>

任务管理器显示该脚本消耗约 0.2 GB 内存。

然后我刷新了页面10次。如果脚本确实导致内存泄漏,则在 10 次刷新后,我应该会看到消耗了约 2 GB 的内存,但任务管理器却显示其他情况。

哪些浏览器中,循环引用会导致 JavaScript 中的内存泄漏?

最佳答案

内存泄漏主要是旧版 IE 中的一个问题,这些 IE 具有循环引用和引用计数垃圾回收,这些垃圾回收从未完全回收所有内容(循环引用中的引用计数永远不会为 0)。

我认为自 IE8 以来 IE 中的内存泄漏问题已得到修复。

Microsoft have a in depth article on the subject .

关于javascript - JavaScript 中循环引用会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6158972/

相关文章:

javascript - 显示加载页面无法正常工作

c# - 如何使用 VS 2008 调试器获取所有堆栈跟踪

javascript - 如何访问 reducer (redux-router)中的当前位置?

ios - LLDB 手册/文档

eclipse - 禁用 .class 文件中的断点

javascript - 奇怪的 IE8 内部 [[ class ]] 属性行为

c# - 网络下载是否会影响 java 脚本在 windows phone 8 中的 web 浏览器控件中运行

javascript - 通过摊牌在浏览器中 Markdown

javascript - 如何比较 JSON 数组并分配固定值

javascript - 如何在鼠标悬停时获取直方图中数据元素的索引?