Chrome开发工具的第一个内存堆快照非常大

eme*_*his 5 memory memory-leaks google-chrome google-chrome-devtools

我正在使用Chrome开发者工具中的"配置文件"选项卡来记录内存堆快照.我的应用程序有内存泄漏,所以我希望快照的大小逐渐增加,他们这样做.但由于我不明白的原因,第一个快照总是人为地大...在第一个和第二个之间创造一个看似具有欺骗性的内存下降.所有后续快照都按预期逐渐增加.

我知道由于缓存和其他设置,在页面加载开始时经常使用额外的内存.但无论何时拍摄第一张快照,都会发生同样的事情.可能是页面加载后30秒或30分钟.相同的模式.我唯一的猜测是它自己的配置文件工具以某种方式与内存交互,但这似乎是一个延伸.

有什么想法在这里发生了什么?

在此输入图像描述

Kon*_*nel 3

在拍摄内存快照之前,Chrome 会尝试收集垃圾。但它并没有彻底收集它,它只执行预定义的传递次数(这个神奇的数字似乎是 7)。因此,当拍摄第一个快照时,仍然可能会留下一些未收集的垃圾。

在制作第一个快照之前,请尝试转到“时间轴”选项卡并手动强制进行垃圾收集。

在 Chrome DevTools 中强制进行垃圾回收

根据我的测试,这总是会减小第一个快照的大小。

内存快照

  • @emersonthis您可以通过在页面加载后立即启动时间线记录来测试自己是否收集了所有垃圾,然后点击“收集垃圾”按钮几次,停止记录并查找“Major GC”事件。最后一个应该说“0 B 收集”,意思是没有更多的垃圾需要收集 - http://imgur.com/ScAJWHk 。 (2认同)