【发布时间】:2013-08-05 15:29:17
【问题描述】:
所以我得到了这个我正在尝试调试的主干应用程序,
我让时间线记录,应用程序正在使用越来越多的内存,但如果我进入配置文件并拍摄堆快照,我总是得到相同的数字 (6mb),就像我的应用程序没有泄漏一样。
另外,当我拍摄快照时,时间线实际上恢复到 6mb。我不确定如何处理这种行为。
【问题讨论】:
标签: javascript google-chrome google-chrome-devtools
所以我得到了这个我正在尝试调试的主干应用程序,
我让时间线记录,应用程序正在使用越来越多的内存,但如果我进入配置文件并拍摄堆快照,我总是得到相同的数字 (6mb),就像我的应用程序没有泄漏一样。
另外,当我拍摄快照时,时间线实际上恢复到 6mb。我不确定如何处理这种行为。
【问题讨论】:
标签: javascript google-chrome google-chrome-devtools
一切都很好,您的应用可能没有泄漏任何内存。您感到困惑的是garbage collector (GC)。
GC 是一种“尝试回收垃圾或被程序不再使用的对象占用的内存”的机制。在时间线上看到内存不断增加是很正常的,这并不一定意味着应用程序正在泄漏内存。这意味着垃圾正在内存中累积,但您的浏览器(更准确地说是 JavaScript 引擎)知道它,并且在 Chrome 决定是时候删除它时将其删除(您可以阅读更多关于它的信息here)。尝试单击“收集垃圾”按钮 (),它会强制进行垃圾收集,您会发现时间线上会立即下降。
回到制作快照的话题,以及为什么你总是以 6MB 结束。创建堆快照时发生的第一件事是......垃圾收集。这是因为 DevTools 不想用不再使用且应该删除的东西来掩盖快照。
【讨论】: