0

我正在测试的代码:

<html>
<body>
<div id="xxx"></div>
<script>
var foo = function(){
  this.x = window.localStorage;
  this.y = document.getElementById('xxx');

  this.y.textContent = 'x:' + this.x.length + '-' + Math.random();
}
setInterval(foo, 1000);
</script>
</body>
</html>

下图是 Chrome chrome的内存使用情况 的内存使用情况 下图是 Safari 的内存使用情况 safari 的内存使用情况

是因为我使用 setInterval 的方式导致内存泄漏吗?Chrome 足够聪明,可以收集垃圾,但 Safari 有问题吗?

我实际上在做的只是使用 setInterval 通过 ajax 定期获取数据并写入 localStorage。起初我以为我使用 setInterval 的方式不好,但是在剥离所有内容并运行上面的示例代码后,Safari 仍然会占用内存而不是释放它。

4

1 回答 1

0

是的,它的内存泄漏。您在全局范围内创建与 DOM 元素链接的 js 对象。

于 2013-06-26T09:09:35.377 回答