如何使用分配分析器工具

Meggin Kearney
Meggin Kearney

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

该工具的工作原理

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

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

分配分析器

启用分配分析器

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

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

记录堆分配性能分析器

读取堆分配配置文件

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

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

分配分析器快照

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

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

放大快照

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

按函数查看内存分配

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