如何使用分配分析器工具

梅金·卡尼
Meggin Kearney

使用分配性能分析器工具查找未正确进行垃圾回收的对象,并继续保留内存。

该工具的工作原理

分配性能分析器可将堆性能分析器的详细快照信息与“时间轴”面板的增量更新和跟踪相结合。与这些工具类似,跟踪对象的堆分配涉及开始记录、执行一系列操作,然后停止记录以进行分析。

该工具在整个记录过程中定期(频率高达每 50 毫秒!)拍摄堆快照,并在记录结束时拍摄一次最终快照。

分配分析器

启用分配分析器

如需开始使用分配分析器,请执行以下操作:

  1. 请确保您使用的是最新版 Chrome Canary 版
  2. 打开开发者工具,点击右下角的齿轮图标。
  3. 现在,打开“Profiler”面板,您应该会看到一个名为“Record Heap Allocations”的配置文件

记录堆分配性能分析器

读取堆分配配置文件

堆分配配置文件会显示创建对象的位置,并标识保留路径。在下面的快照中,顶部的竖条表示在堆中发现新对象的时间。

每个条形的高度都对应于最近分配的对象的大小,条形的颜色表示这些对象是否仍在最终堆快照中。蓝条表示在时间轴末尾仍处于活动状态的对象,灰色条表示在时间轴期间分配但后来被垃圾回收的对象:

分配分析器快照

在下面的快照中,操作执行了 10 次。示例程序缓存了五个对象,因此应该显示最后五个蓝条。但最左边的蓝色条表示存在潜在问题。

然后,您可以使用上面时间轴中的滑块放大该特定快照,并查看最近在该点分配的对象:

放大快照

点击堆中的特定对象后,系统会在堆快照的底部显示其保留树。通过检查对象的保留路径,您应该能够获得足够的信息来了解对象未被收集的原因,并且您可以对代码进行必要的更改以移除不必要的引用。

按函数查看内存分配

您还可以按 JavaScript 函数查看内存分配情况。如需了解详情,请参阅按函数调查内存分配情况