我读过许多声明,声称循环引用会导致内存泄漏:
所以我在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中的内存泄漏?
答案 0 :(得分:4)
内存泄漏主要是旧的IE中的问题,循环引用和引用计数垃圾收集从未完全回收所有内容(在循环引用中从不引用计数为0)。
我认为自IE8以来,IE中的内存泄漏已得到修复。