如何使用分配时间轴工具

Meggin Kearney
Meggin Kearney

使用分配时间轴工具查找未正确进行垃圾回收且继续保留内存的对象。

该工具的工作原理

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

该工具会在整个录制过程中定期(最短每 50 毫秒一次!)截取堆快照,并在录制结束时截取一个最终快照。

分配时间轴示例录制。

记录分配时间轴报告

如需开始使用分配时间轴工具,请按以下步骤操作:

  1. 在开发者工具中打开内存面板。
  2. 启用时间轴上的分配情况配置文件。
  3. Start 按钮开始录制。

突出显示的“在时间轴上记录分配”选项。

读取堆分配配置文件

堆分配性能剖析文件会显示对象的创建位置,并标识保留路径。在以下快照中,顶部的条状图表示何时在堆中找到了新对象。

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

分配时间轴记录示例。

您可以放大以过滤构造函数窗格,以便仅显示在指定时间范围内分配的对象。如需放大,请将鼠标拖动到时间轴中您要重点关注的时间范围。

时间轴已缩放到单个条状。

Constructor 窗格中点击特定构造函数后,Retainers 窗格中会显示其保留树。通过检查指向对象的保留路径,您应该可以获得足够的信息来了解对象未被收集的原因,并可以进行必要的代码更改以移除不必要的引用。

按函数查看内存分配

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