【发布时间】:2013-04-21 19:28:12
【问题描述】:
我想了解哪种代码会导致 JavaScript 中的内存泄漏,并创建了下面的脚本。但是,当我在 OS X 上的 Safari 6.0.4 中运行脚本时,活动监视器中显示的内存消耗并没有真正增加。
我的脚本有问题还是现代浏览器不再有问题?
<html>
<body>
</body>
<script>
var i, el;
function attachAlert(element) {
element.onclick = function() { alert(element.innerHTML); };
}
for (i = 0; i < 1000000; i++) {
el = document.createElement('div');
el.innerHTML = i;
attachAlert(el);
}
</script>
</html>
该脚本基于 Google JavaScript 样式指南的 Closure 部分: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Closures#Closures
编辑:导致上述代码泄漏的错误显然已得到修复:http://jibbering.com/faq/notes/closures/#clMem
但我的问题仍然存在:是否有人能够提供一个现实的 JavaScript 代码示例,该示例会在现代浏览器中泄漏内存?
互联网上有很多文章表明内存泄漏可能是复杂的单页应用程序的一个问题,但我很难找到可以在浏览器中运行的示例。
【问题讨论】:
标签: javascript memory-leaks garbage-collection closures