专注于
IT技术和业内交流

Chrome DevTools — 如何使用对象追踪器

用对象分配追踪器来查找那些有不正确内存回收、额外引用的对象

对象追踪器如何工作

对象追踪器结合了堆分析器中快照的详细信息以及时间轴的增量更新以及追踪信息。
跟这些工具相似,追踪对象堆的分配过程包括开始记录,执行一系列操作,以及停止记录并分析。

对象分析器在记录中周期性生成快照(大概每 50 毫秒就会生成一次),并且在记录最后停止时也会生成一份快照。
堆分配配置文件显示了对象在哪里创建并且标识出了保留路径。

Allocation profiler

启用对象追踪器

要开始使用对象追踪器:

  1. 确认你安装了最新的 Chrome Canary
  2. 打开 DevTools 并点击右边下面的齿轮图标。
  3. 现在,在配置面板中,你可以看见一项名为 “Record Heap Allocations” 的配置。

Record heap allocations profiler

读取 heap allocation profile

堆分配配置文件(heap allocation profile)显示创建对象的位置和驻留路径。
在下面的快照中,顶栏的条形图表示对象什么时候在堆中被找到。

每个条形图的高度对应最近分配的对象的大小,而其颜色则说明这些对象在最后的快照中是否还处于生存周期。
蓝色表示在时间轴的最后该对象依旧存在,
灰色则说明对象在时间轴内被分配,
但是已经被垃圾回收器回收了:

Allocation profiler snapshot

在上面的例子中,一个操作被执行了10次。
这个简单的程序加载了五个对象,所以显示了五个蓝色的条形图案。
但是最左边的条形图表明了一个潜在的问题。

接下来你可以使用时间轴中的滑动条来放大这一特定的快照,然后查看最近被分配到这一点上的对象:

Zoom in on snapshot

点击堆中的某个特定对象会在堆快照的顶部显示其保留树。检查对象的保留路径会让你明白为什么对象没有被回收,并且你可以在代码中做出更改移除不必要引用。

本文由@W翻译、@海欧校验,感谢大家的参与.如有错译、漏译请留言我们会及时更正。

未经允许,不得转载本站任何文章:代码山 » Chrome DevTools — 如何使用对象追踪器

分享到:更多 ()

专注品牌化高端网站建设

商务服务联系我们