-
进入开发人员工具面板,选择性能
-
开启录制功能,访问具体界面
-
执行用户行为,一段时间后定制录制
-
分析界面中记录的内存信息
=================================================================
-
页面出现延迟加载或者经常性暂停 — 频繁的垃圾回收
-
页面持续性出现糟糕的性能 — 内存膨胀
-
页面的性能随时间延长越来越差 — 内存泄漏
==============================================================
-
内存泄漏 — 内存使用持续升高
-
内存膨胀 — 在多数设备上都存在性能问题
-
频繁的垃圾回收 — 通过内存变化图进行分析
-
浏览器任务管理器
- 可以直接以数值的形式,将我们当前应用程序在执行过程中内存的变化体现出来
-
Timeline时序图记录
- 直接把我们应用程序执行过程中所有内存的走势以时间点的方式呈现出来,有了这张图很容易做判断
-
堆快照查找分离DOM
- 有针对性的查找我们当前的界面对象中,是否存在分离的DOM,因为分离DOM的存在就是一种内存泄漏
===================================================================
-
如果我们最后一列小括号内的数值一直增大,那就意味着这个内存是有问题的
-
具体来说是什么问题当前这个工具就显得不是特别好用了,因为它只能帮助我们发现这个地方有没有问题,如果说我们想定位问题时,他就不太好用了
-
在这个地方我们可以直接通过
shift + esc
调出任务管理器 -
找到我们想要去监控的具体脚本,也就是说web页面
-
选中之后如果说没有JS这一列我们可以直接右键然后勾选
-
调整完后我们只需要关注两列
-
第一列为当前DOM节点占用的内存,一般情况也是不变为好,如果要变的话就证明我们当前界面存在频繁的DOM操作
-
第二列为最后的JS内存,在这里我们要关注的就是小括号内的数值,得出的结论就是如果小括号里的数值一直增加而没有变小的过程,就意味着我们的内存就一直往上走,而没有GC消耗,所以这个时候就有问题了
-
======================================================================
-
任务管理器可以帮助我们发现问题,但是具体定位的话就显得不是很方便
-
Timeline — 通过时间线记录内存变化的方式 — 更精确的定位到我们当前内存的问题与那一块代码是相关的,或者说在什么时间节点上发生的
====================================================================
-
什么是分离DOM
-
界面元素存活在DOM树上
-
垃圾对象时的DOM节点
-
分离状态的DOM节点
-
-
总结:
- 我们可以利用浏览器当中提供的堆快照的功能,然后把我们当前的堆进行性拍照,拍照结束后找这里边是否存在一些分离DOM,因为这个分离DOM在界面中不体现,但是在内存中的确存在,所以这个时候它是一种内存的浪费,我们要做的就是定位到我们的代码里的那些分离DOM所在的位置,然后想办法给清除掉
====================================================================
-
为什么需要知道是否存在频繁的垃圾回收
-
当GC工作时应用程序是停止的
-
GC频繁工作而且时间过长,对web应用很不友好
-
因为它会处于一个假死的状态,对于用户来说就会感觉到整个应用有点卡顿
-
-
所以就要想办法确定当前应用中是否存在着频繁的回收
-
Timeline中频繁的上升下降
-
任务管理器中数据频繁的增加减小
-