性能分析 -- Performance monitor 的简单使用

715 阅读2分钟

Performance monitor

打开路径:

  1. F12 打开控制台
  2. 右上角三个点选择 More Tools
  3. 选择 Performance monitor

Performance monitor 界面展示: image.png

参数说明:

  • CPU useage -- 当前 CPU 占用情况。
  • JS Heap size -- 堆内存使用情况。
  • DOM nodes -- DOM 节点数量
  • JS event Listeners -- js 事件监听器的数量
  • Documents -- 实时文档资源的数量
  • Document frames -- 页面上活动框架的数量(iframe 和 workers)
  • Layout/sec -- 浏览器必须重新布局 DOM 的速率
  • Style recalc/sec -- 浏览器必须重新计算样式的速率

如何使用

性能监测器(Performance monitor),通常不需要耗费太多额外的性能,我在日常开发中会将上述参数中的前两项打开,也是就 CPU useageJS Heap size

CPU useage

  • 通常是大量的 DOM 渲染/操作,或者非常大的运算量导致的。常见的场景中,例如长列表渲染, 大量的表单渲染,截图等一些功能都会造成 CPU 的上升。 建议在开发过程中关注异常的 CPU 占用情况,这往往都是一个优化点。

Js heap size

  • 浏览器有非常强大内存的垃圾回收机制。通常情况下我们 web 开发者不需要太关注内存的使用情况。如果我们关注该参数,可以看见在页面静止不动几秒后渐渐减少,此时就是浏览器的垃圾回收机制在发挥作用。
  • 如果出现堆内存持续处于高位,一直没有下降的情况,就需要对业务进行分析,是否有数据处于异常新增的状态,导致无法被浏览器自动回收。常见的异常情况有:定义了大量的闭包,有非常高频的循环一直在给对象赋新值,或者有很多定时器一直在执行一些代码。

js 内存详解:

通常情况下,引用类型的数据储存在推内存中。

参考: 使用 chrome-devtools Performance 面板

JavaScript 内存详解 & 分析指南

Memory management

拓展:

  1. devTool memory 的简单使用:
  2. devTool performance 的简单使用
  3. canvas 内存管理
  4. safari canvas 尺寸与内存限制
  5. safari 自动刷新问题
  6. json.stringify 对于循环引用无法序列化问题
  7. 栈溢出与尾递归