博客
关于我
Performance的基础使用
阅读量:526 次
发布时间:2019-03-08

本文共 1522 字,大约阅读时间需要 5 分钟。

Performance工具介绍

  • 关于GC的目的就是为了实现内存空间的良性循环
  • 良性循环的基础是对内存空间有一个合理的使用
  • 时刻关注才能确定是否合理
  • Preformance提供多种监控方式

总结:

  • 通过Performance时刻监控内存,有这样一个操作后,我们就可以在程序的内存出现一些问题之后,直接想办法定位到当前问题所在的代码块

基本使用步骤

  • 打开浏览器输入目标网址
  • 进入开发人员工具面板,选择性能
  • 开启录制功能,访问具体界面
  • 执行用户行为,一段时间后定制录制
  • 分析界面中记录的内存信息

内存问题的体现

  • 页面出现延迟加载或者经常性暂停 — 频繁的垃圾回收
  • 页面持续性出现糟糕的性能 — 内存膨胀
  • 页面的性能随时间延长越来越差 — 内存泄漏

监控内存

界定内存问题的标准

  • 内存泄漏 — 内存使用持续升高
  • 内存膨胀 — 在多数设备上都存在性能问题
  • 频繁的垃圾回收 — 通过内存变化图进行分析

监控内存的几种方式

  • 浏览器任务管理器
    • 可以直接以数值的形式,将我们当前应用程序在执行过程中内存的变化体现出来
  • Timeline时序图记录
    • 直接把我们应用程序执行过程中所有内存的走势以时间点的方式呈现出来,有了这张图很容易做判断
  • 堆快照查找分离DOM
    • 有针对性的查找我们当前的界面对象中,是否存在分离的DOM,因为分离DOM的存在就是一种内存泄漏

任务管理器监控内存

  • 如果我们最后一列小括号内的数值一直增大,那就意味着这个内存是有问题的
  • 具体来说是什么问题当前这个工具就显得不是特别好用了,因为它只能帮助我们发现这个地方有没有问题,如果说我们想定位问题时,他就不太好用了
  • 在这个地方我们可以直接通过shift + esc调出任务管理器
  • 找到我们想要去监控的具体脚本,也就是说web页面
  • 选中之后如果说没有JS这一列我们可以直接右键然后勾选
  • 调整完后我们只需要关注两列
    • 第一列为当前DOM节点占用的内存,一般情况也是不变为好,如果要变的话就证明我们当前界面存在频繁的DOM操作
    • 第二列为最后的JS内存,在这里我们要关注的就是小括号内的数值,得出的结论就是如果小括号里的数值一直增加而没有变小的过程,就意味着我们的内存就一直往上走,而没有GC消耗,所以这个时候就有问题了

Timeline记录内存

  • 任务管理器可以帮助我们发现问题,但是具体定位的话就显得不是很方便
  • Timeline — 通过时间线记录内存变化的方式 — 更精确的定位到我们当前内存的问题与那一块代码是相关的,或者说在什么时间节点上发生的

堆快照查找分离DOM

  • 什么是分离DOM
    • 界面元素存活在DOM树上
    • 垃圾对象时的DOM节点
    • 分离状态的DOM节点
  • 总结:
    • 我们可以利用浏览器当中提供的堆快照的功能,然后把我们当前的堆进行性拍照,拍照结束后找这里边是否存在一些分离DOM,因为这个分离DOM在界面中不体现,但是在内存中的确存在,所以这个时候它是一种内存的浪费,我们要做的就是定位到我们的代码里的那些分离DOM所在的位置,然后想办法给清除掉

判断是否存在频繁GC

  • 为什么需要知道是否存在频繁的垃圾回收
    • 当GC工作时应用程序是停止的
    • GC频繁工作而且时间过长,对web应用很不友好
    • 因为它会处于一个假死的状态,对于用户来说就会感觉到整个应用有点卡顿
  • 所以就要想办法确定当前应用中是否存在着频繁的回收
    • Timeline中频繁的上升下降
    • 任务管理器中数据频繁的增加减小

Performance总结

  • 谷歌浏览器提供的一个性能工具
  • Performance使用流程
  • 内存问题相关分析
    • 内存泄漏
    • 内存膨胀
    • 频繁的垃圾回收
  • Performance 时序图监控内存变化
  • 任务管理器监控内存变化
  • 堆快照查找分离DOM

转载地址:http://vmwiz.baihongyu.com/

你可能感兴趣的文章
mysql replace用法
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql server has gone away
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>