5

我每 5 秒运行一次繁重的 JavaScript,任务管理器显示内存使用量不断增加。但是堆快照没有。如果我停止脚本,大约半分钟两分钟后清除内存。

更新:

如果我长时间离开脚本,内存会增加,直到浏览器崩溃。我还尝试运行 chrome 开发工具的时间线测试,它们也没有显示内存使用量的增加,与堆快照相同。所以我想这是某种泄漏,但我不明白是什么泄漏。

由于无法安装以前的 Chrome 版本,我无法确认的另一件事是,我不记得以前(<24 个 Chrome 版本)发生过这种情况。并且 IE10 在不增加内存的情况下运行这个测试。这可能是新 Chrome 的问题吗?

4

1 回答 1

3

假设您指的是 Chrome 开发人员工具,您可能看不到堆快照中的内存增加,因为堆快照分析器在快照之前运行垃圾收集器。

看到内存使用量增加,尤其是在主动处理期间,是很正常的。垃圾收集器不会不必要地运行。如果你的机器有空闲内存,它会让保留的内存增长。如果您开始推动可用内存的限制,则收集器应该运行。您应该允许这种情况发生,看看是否会发生。

由于您报告内存在空闲期后下降到原来的水平,这表明没有内存泄漏,并且垃圾收集器能够正确收集所有分配的堆对象。

但是,IANAGE(我不是 Google 工程师)。我建议阅读Heap Profiler 文档和相关的Memory 101 页面作为背景信息。

于 2013-01-22T20:16:26.460 回答