Chrome堆快照统计,灰色代表什么?

mf98qq94  于 2023-08-01  发布在  Go
关注(0)|答案(5)|浏览(100)


的数据
上图中灰色代表什么?

a0x5cqrl

a0x5cqrl1#

未分配内存


的数据

    • 总内存**:20,526 KB
    • 已分配内存总量**:1925 + 2939 + 2918 + 494 + 840 = 9,116 KB
    • 未分配内存总量**:20,526 - 9,116 = 11,410 KB

11410/20526 = 〜 0.56(0.56/1),其是图上的阴影区域。

    • 总未分配内存/总内存**= Shaded Area


  • 显示已分配内存与未分配内存的环形图 *
fdbelqdn

fdbelqdn2#

总价值

在所表示的Heap Snapshot Statictics饼图中-

TOTAL是JavaScript对象和相关DOM节点之间的 * 总内存堆 * 分布。我还应该说heap是为动态分配预留的内存。

根据Chrome Memory Tab文章:
内存泄漏发生在网站使用超过必要的能源时。严重的内存泄漏甚至会使站点无法使用。由于JavaScript内存泄漏检测器是Google Chrome浏览器的一部分,因此您应该毫不犹豫地选择分析类型并分析网站的内存使用情况。
Google Chrome堆快照将揭示JavaScript对象和相关DOM节点之间的内存分布。此功能非常有用,因为您将能够比较不同的快照并查找内存泄漏。
x1c 0d1x的数据

vsikbqxv

vsikbqxv3#

我正在为我正在开发的一个应用程序尝试理解这一点-为什么?为什么?为什么?大多数开发人员工具文档的日期都是2015年,是为过时版本的工具编写的-太令人沮丧了。但我跑题了。
首先,我相信快照大小基于活动对象的说法是正确的-快照大小由拍摄快照时活动对象占用的内存量确定-快照中没有未分配的内存或符合GC条件的对象。
其次,如果您查看统计视图中的命名类别列表,它们都对应于管道-原生JavaScript对象/类型和System。这些类别都不考虑应用程序创建的自定义对象或快照摘要视图中可见的许多其他项目。
所以我相信图表中未命名的(白色或灰色)部分基本上是 Everything else -包括应用程序创建的自定义对象的示例。结论基于我的调查描述如下。
在我的情况下,(组成数字):

  • 堆快照大小为25 MB。
  • 内存选项卡上报告的活动堆大小为20 MB
  • 统计图表中的总数为25,000(与快照大小匹配)
  • 统计图表中列出的类别总数仅为17 MB

我打开了 * 更多工具/任务管理器 *(就在 * 开发人员工具 * 的正上方)。我发现我的应用程序实际上有两个选项卡。列出的第一个选项卡的名称与我正在运行的应用程序的选项卡名称匹配。第二个(隐藏)选项卡的名称与应用程序URL匹配。为这两个选项卡添加JavaScript内存,结果是24,567--几乎与堆快照大小和统计信息Total相同。我认为这是相同的,因为任务管理器是一个实时值,快照是一个时刻。随着开发人员工具的打开,有一个额外的应用程序选项卡,明确标记为开发工具使用。
GC在导出堆快照之前运行,因此它应该只包括活动对象。
下面列出了图表的命名类别。类别名称后面是在摘要视图中找到的假定对应类型/对象的名称沿着对报告大小的注解。
目前尚不清楚类别大小是如何计算的。每个类别列出的大小与摘要视图中假定的相应类型/对象之间存在从小到大的差异。没有一个类别尺寸与“摘要”视图中报告的浅尺寸或保留尺寸完全匹配。

  • 代码-(编译代码)?- 类别大小在100 K的摘要视图浅大小内。
  • 字符串(字符串)?- 类别大小在摘要视图的浅和保留大小(相同大小)的几百K内。
  • JS数组-类别大小与Array、array或TypedArray的摘要视图浅大小或保留大小没有相似之处。
  • 类型数组-与JS数组相同的注解。
  • 系统对象(系统)?- 列出的大小介于摘要视图中列出的浅大小和保留大小之间(太接近而无法调用)。

正如我在上面的总结中所述,类别都是原生JavaScript类型/对象或系统。列出的类别都不能说明由应用程序代码创建的自定义对象或摘要视图中列出的许多其他项。
因此,图表的未命名(白色或灰色)部分似乎是由 Everything else 类别中的活动对象(包括自定义应用程序对象)占用的堆。
如果他们加一个标签来澄清这一点,那就太棒了。如果您可以自定义图表来显示特定类或最大保留堆的段,那就更好了。??

5n0oy7gb

5n0oy7gb4#

Total它是可访问的JavaScript对象的总数,它是当前内存,用于填充当时此堆的数据的已创建对象。


的数据
在您的图像中,您将在图像上找到71955 kb,它与Total的值相同
Total之前的值是在向对象填充数据之前的初始点处的数据值(以字节为单位
更多的定义检查 chrome 内存分析

ego6inou

ego6inou5#

灰色表示 * 对象 * 被 * 垃圾回收 * 保护。

这是 shallowretained 大小之间的差异(您可以在摘要视图中看到这些)
换句话说,* 数据本身 * 和 * 分配的内存 * 之间的差异

更长描述

https://developers.google.com/web/tools/chrome-devtools/memory-problems/memory-101

简短描述

对象的保留大小是其浅大小加上仅可从该对象直接或间接访问的对象的浅大小。换句话说,保留大小表示回收此对象时垃圾回收器将释放的内存量。
https://www.yourkit.com/docs/java/help/sizes.jsp


的数据

相关问题