【问题标题】:Chrome Heap Snapshot - Why it doesn't show all the memory allocated?Chrome 堆快照 - 为什么它不显示所有分配的内存?
【发布时间】:2012-10-30 08:46:04
【问题描述】:

我正在我拥有的 WebGL 项目中运行一些内存使用测试。如果我在 Google Chrome 上启动页面并在 Developers Tool 的 Profiles 选项卡上拍摄堆快照,它会说我的页面占用了 7.5 MB。

问题是,如果我查看任务管理器,它使用的实际值几乎是 1 GB!这是意料之中的,因为我确实在强制页面包含数千个对象,但问题是:为什么 Chrome 向我显示我只使用了 7.5 MB?

【问题讨论】:

  • Chrome 的进程分布在插件、标签和主要的 chrome 服务中。你到底想要什么快照?
  • @TheZ 我真正想知道的是我的页面正在使用的内存量。
  • 你应该在crbug.com提交一个错误

标签: javascript google-chrome webgl google-chrome-devtools


【解决方案1】:

更新

本机内存快照能够向您显示本机内存图。 不幸的是,我们删除了它,因为它是一段脆弱的代码。 它需要数百个类中的重要仪器,并影响二进制大小。 我希望我们稍后重新实现它。

曾经

它拍摄 Javascript 堆的快照。您所有的 javascript 对象都使用 7.5mb。此大小不包括图像、画布、音频文件、插件数据等。

DevTools 中有本机内存快照。 它计算渲染器进程使用的非 JavaScript 内存,但这是一个实验性功能。

您需要在chrome://flags 中启用 DevTools 实验功能,重启浏览器,在 DevTools 设置面板中启用 Native Memory Profiler 实验功能并重新打开 DevTools。

完成所有这些步骤后,您将能够在 Profiler 面板中获取 Native Memory Snapshot。 并非本机内存堆中的所有内存块都被计算在内,但我们正在努力解决这个问题。

请使用Canary version of Chrome。 它每天都会更新,并且可以与其他版本的 Chrome 一起使用。

如果您的页面占用了千兆字节的内存并且“其他”栏很大,超过 10%-20%,请发送邮件至Google Chrome Developer Tools Foums。

【讨论】:

  • 不幸的是,谷歌已经从实验性开发工具中删除了本机内存快照功能。我不知道为什么。但这意味着这个答案不再有效:/
  • 有本机内存快照可以显示本机内存图。不幸的是,我们删除了它,因为它是一段脆弱的代码。它需要数百个类中的重要仪器,并影响二进制大小。我希望我们以后重新实现它。
  • 感谢您的更新 - 看来我不能再奖励赏金了,但要 +1!
  • 多年过去了,但 Google 没有给我们提供分析原生内存的方法
  • 2018 年现在有什么办法吗?我看到 Chrome v69 中有“本机内存采样分析器”标志,但在启用并重新启动后,我仍然看不到在 DevTools 中拍摄本机内存快照的选项。
【解决方案2】:

您仍然可以在配置文件选项卡下拍摄快照,然后单击拍摄头部快照,它会为您提供深入的内存使用统计信息。

【讨论】:

  • shapshots 只是给你一个堆的视图。正如问题所述,问题在于分析 Chrome 任务管理器中显示但未显示在堆中的内存使用情况。
猜你喜欢
  • 2019-12-07
  • 2017-12-04
  • 2021-04-13
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2020-04-25
  • 1970-01-01
相关资源
最近更新 更多