任务管理器显示内存泄漏,但堆快照不显示

zer*_*oin 5 javascript memory-leaks

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

更新:

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

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

jev*_*lio 3

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

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

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

然而,IANAGE(我不是谷歌工程师)。我建议阅读堆分析器文档和相关的内存 101 页以了解背景信息。