14

发现问题:找到疑似操作

Chrome Performance 排查

点击开始录制 ,在页面上进行操作,之后观察堆内存使用趋势,尝试多次如观察到为上涨趋势时就有可能是内存泄漏(并不能认定一定是内存泄漏,有可能是内存还没有释放),如果出现这种情况我们就要使用 memory 看板进行进一步的分析

注意点:在每次开始和结束前都要点击垃圾回收

Performance monitor 看板

第二种方式是使用 performance monitor 面板进行排查, 可以一边操作一边查看performance monitor 面板上内存的使用趋势,如果内存出现上涨趋势的情况也有可能是出现内存泄漏

分析内存快照:找到问题原因

Memory 看板


  1. 切换到memory 看板
  2. 点击截取快照生成快照 1
  3. 操作疑似泄漏的操作 再生成快照 2
  4. 切换到comparsion(对比试图)
  5. 观察 Delta 列观察增长较大的对象,可能存在内存泄漏的问题
  6. 重复以上的操作,直到定位到具体的原因

Dom 树引用内存泄漏问题排查

  1. 选择 summary 试图,搜索 detached ,搜索到部分的dom已经销毁,但是还被 js 引用这部分会导致内存泄漏

    识别 js 对象内存泄漏


录制时,请注意“分配时间轴”上是否有蓝色条状显示, 这些蓝色条表示新的内存分配,这些新的内存分配是内存泄漏的对象。

image.png

选择特定的区域排查泄漏的对象。

术语解释

试图

Summary:摘要视图
Comparison:对比视图,与其它快照对比,看增、删、Delta数量及内存大小
Containment:俯瞰视图,自顶向下看堆的情况,根节点包括window对象,GC root,原生对象等等

列头

Shallow Size   : 对象本身占用的内存
Retained Size : 对象本身及其引用总共占用的内存
Distance :当前对象到根的引用层级距离
Alloc. Size : 新分配的内存
Freed  Size : 释放的内存

https://developer.chrome.com/...


曹飞龙
167 声望8 粉丝

进取・坚韧・开放・影响