博客
关于我
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及navicat for mysql中文乱码
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>
MySQL各个版本区别及问题总结
查看>>
MySql各种查询
查看>>
mysql同主机下 复制一个数据库所有文件到另一个数据库
查看>>
mysql启动以后会自动关闭_驾照虽然是C1,一直是开自动挡的车,会不会以后就不会开手动了?...
查看>>
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>
MySQL命令行登陆,远程登陆MySQL
查看>>
mysql命令:set sql_log_bin=on/off
查看>>
mySQL和Hive的区别
查看>>
MySQL和Java数据类型对应
查看>>
mysql和oorcale日期区间查询【含左右区间问题】
查看>>
MYSQL和ORACLE的一些操作区别
查看>>
mysql和redis之间互相备份
查看>>
MySQL和SQL入门
查看>>
mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042
查看>>