以下 javascript 代码似乎泄漏了内存,但我不知道为什么。我在 chrome 19 和 firefox 12 中试过这个。代码如下:
<body>
<input id="add" type="button" value="add" onclick="add()" />
<input id="remove" type="button" value="remove" onclick="remove()" />
<div id="content">
</div>
</body>
<script>
var count = 0;
function add() {
var i = 0,
newdiv;
for (i = 0; i < 10000; i++) {
newdiv = document.createElement('div');
document.getElementById("content").appendChild(newdiv);
newdiv.setAttribute('id', "div" + count);
newdiv.innerHTML = "section " + count;
newdiv = null;
count = count + 1;
}
}
function remove() {
var i = 0;
for (i = 0; i < count; i++) {
document.getElementById("content").removeChild(document.getElementById("div" + i));
}
count = 0;
}
</script>
当您继续单击添加按钮,然后单击删除按钮时, Windows 任务管理器中的内存不断增加。我预计当垃圾收集开始时内存会减少,但这似乎永远不会发生。
所以,我的问题是:这段代码中是否存在内存泄漏?如果是这样,我该如何重构代码来修复泄漏?