我每5秒运行一次大量的JavaScript,任务管理器显示内存使用量不断增加。但是Heap快照没有。如果我停止脚本,大约半分钟两分钟后内存被清除。
更新:
如果我长时间离开脚本,内存会一直增加,直到浏览器崩溃。 我还尝试运行chrome dev工具的时间线测试,它们也没有显示内存使用量的增加,与Heap快照相同。所以我想这是一种泄漏,但我无法理解泄漏的是什么。
我无法确认的另一件事是因为我无法安装以前的Chrome版本,因此我不记得之前发生的事情(< 24 Chrome版本)。 IE10在不增加内存的情况下运行此测试。这可能是新Chrome的问题吗?
答案 0 :(得分:3)
假设您指的是Chrome开发者工具,您可能看不到堆快照中的内存增加,因为堆快照分析器在快照之前运行垃圾收集器。
看到增加的内存使用量,特别是在活动处理期间,是很正常的。垃圾收集器不会不必要地运行。如果你的机器有备用的内存,它会让预留的内存增长。如果你开始推动可用内存的限制,收集器应该运行。你应该允许它发生这种情况。
由于您报告内存在空闲时段后降至原始级别,这表示没有内存泄漏,垃圾收集器能够正确收集所有已分配的堆对象。
然而,IANAGE(我不是Google工程师)。我建议您阅读Heap Profiler documentation以及相关的Memory 101 page作为背景信息。