【问题标题】:Heap snapshot size is lot less than volume of RAM used堆快照大小远小于使用的 RAM 量
【发布时间】:2017-08-31 03:28:47
【问题描述】:

我正在通过 Chrome 的任务管理器检查 Chrome 中特定选项卡的内存消耗。它显示了我使用的大量 RAM:

然而,当我在开发者工具中拍摄堆快照时,它显示的大小要小几倍:

怎么可能?

【问题讨论】:

  • 您知道选项卡不仅仅是在视口上加载的内容吗?
  • @JosephtheDreamer 实际上,不,我没有。这就是我问的原因。

标签: javascript google-chrome profiling google-chrome-devtools heap-profiling


【解决方案1】:

并非浏览器分配的每一位内存都被分配在堆上的 ECMAScript 对象使用。还有分配在堆栈上的 ECMAScript 对象、ECMAScript 运行时本身、下载的资源(HTML、CSS、ECMAScript、SVG、PNG、GIF、JPEG ……)、DOM 对象、显示树、显示缓冲区、缓存、浏览器本身等

此外,转储堆只会转储活动对象,而不转储垃圾,并且会压缩堆,因此即使“活动”堆本身也会比堆转储大,因为活动堆还包含未处理的死对象还没有被垃圾回收,还有可用内存的“漏洞”。

tl;dr:堆转储仅包含紧密打包在一起的活动对象。 真正的堆还包含死对象和空洞,此外,除了 ECMAScript 堆之外,还有很多东西。

【讨论】:

  • 我想知道如何检查这些项目并找到内存去了哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 2012-06-24
  • 1970-01-01
相关资源
最近更新 更多