【问题标题】:Memory leak in Chrome and difference between snapshot size and memory allocationChrome中的内存泄漏以及快照大小和内存分配之间的差异
【发布时间】:2015-11-25 06:03:39
【问题描述】:

我目前正在尝试在通过 websocket 接收一些更新的页面中查找内存泄漏。所以我所做的是我首先检查了 Chrome 任务管理器,它显示为选项卡分配的内存正在增长。之后我检查了时间线工具(强制 GC 几次),内存似乎表现得很好。

添加了一些 html 节点(绿线),所以我假设仍然有一些节点从 js 代码中引用,但是当我进入分析器(记录堆分配)时,我看到了一个奇怪的行为- 快照本身是 109MB:

但在我停止分析后,内存会增加,而且还不到 109MB。我见过的例子:

  • 快照 361M 之前,快照 723M 之后,快照 - 89M
  • 快照 329M 之前,快照 612M 之后,快照 - 54.4M
  • 快照前 450M,快照后 773M,快照 - 109M

我看到一些节点仍然被引用,但它们的保留大小比快照的大小小很多。

所以我想知道的是为什么 Chrome Profiler 会出现这种奇怪的行为(快照大小和内存消耗的差异)以及我如何找到消耗内存的内容?

【问题讨论】:

    标签: memory-leaks google-chrome-devtools


    【解决方案1】:

    该快照大小仅包括使用的 JS 堆大小。任务管理器将向您显示进程总大小,这不仅仅是 JS 堆。此外,一大块内存可能被类型化数组占用,这些类型化数组的缓冲区在 JS 堆外分配。能不能在堆快照中从“Summary”视图切换到“Statistics”,看看js堆的分解是什么样子的?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 2011-03-20
      • 2016-09-12
      • 2017-04-08
      • 2013-07-06
      相关资源
      最近更新 更多