Chrome堆快照 - 为什么它不显示分配的所有内存?

Dan*_*ira 20 javascript google-chrome webgl google-chrome-devtools

我在一个WebGL项目中运行了一些内存使用测试.如果我在Google Chrome浏览器上启动该页面并在开发者工具的"配置文件"选项卡上获取堆快照,则会说我的页面保持7.5 MB.

问题是如果我查看任务管理器,它使用的实际值几乎是1 GB!这是预期的,因为我真的强迫页面有数千个对象,但问题是:为什么Chrome向我显示我只使用7.5 MB?

loi*_*slo 12

更新

有本机内存快照,能够显示本机内存图.不幸的是我们删除了它,因为它是一段脆弱的代码.它需要在数百个类中进行非平凡的检测并影响二进制大小.我希望我们以后重新实现它.

它需要Javascript堆的快照.你所有的javascript对象都使用7.5mb.此大小不包括图像,画布,音频文件,插件数据等.

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

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

完成所有这些步骤后,您将能够在Profiler面板中获取本机内存快照.并非所有本机内存堆中的内存块都被计算在内,但我们正在努力.

请使用Canary版Chrome.它每天都会更新,并与其他版本的Chrome并排运行.

如果您的页面占用千兆字节的内存并且具有超过10%-20%的大"其他"栏,请将相关邮件发送到Google Chrome开发者工具库.