3

所以我得到了这个我正在尝试调试的主干应用程序,

我让时间线记录,应用程序正在使用越来越多的内存,但是如果我进入配置文件并拍摄堆快照,我总是得到相同的数字(6mb),就像我的应用程序没有泄漏一样。

另外,当我拍摄该快照时,时间线实际上又回到了 6mb。我不确定如何处理这种行为。

4

1 回答 1

4

一切都很好,您的应用程序可能没有泄漏任何内存。您感到困惑的是垃圾收集器(GC)。

GC 是一种“尝试回收垃圾或被程序不再使用的对象占用的内存”的机制。在时间线上看到内存不断增加是很正常的,这并不一定意味着应用程序正在泄漏内存。这意味着垃圾正在内存中积累,但您的浏览器(更准确地说是 JavaScript 引擎)知道它,并会在 Chrome 决定是时候将其删除(您可以在此处阅读有关它的更多信息)。尝试单击“收集垃圾”按钮 ( ),它会强制进行垃圾收集,您会注意到时间线上会立即下降。

回到制作快照以及您总是以 6MB 结束的原因。创建堆快照时发生的第一件事是......垃圾收集。这是因为 DevTools 不想用不再使用且应该删除的东西来掩盖快照。

我强烈建议阅读有关堆分析的官方文档

于 2013-08-06T11:52:57.800 回答