内容简介:下图是Observatory的主页面:表示当前所在的位置
Flutter性能监控工具(1)--- Observatory简介 主要讲了如何打开Observatory,现在讲一下如何使用Observatory里的各个功能来分析性能问题,
下图是Observatory的主页面:
最上面的蓝色导航栏
表示当前所在的位置
-
vm@ws://127.0.0.1:50579/ws :表示当前连接的VM
鼠标放在这个上面,会看到这个,表示当前APP的main():
- 右边的Refresh :刷新数据
VM
这里显示当前VM的信息
- name : 当前VM的名字
- version :Dart的版本,APP build的时间,运行在哪个平台上
- embedder :嵌入的平台
- started at :VM启动时的时间戳
- uptime :VM已运行的时长
- refreshed at :上次采样数据的时间
- pid : 进程ID
- peak memory :APP运行时用的峰值内存
- current memory : APP当前用的内存
- native zone memory :native 原生内存
- native heap memory :native 堆内存
- native heap allocatioon count : native 堆对象数量
- flag :一些标记位
- timeline :工具
- native memory profile :
Isolates
这里是显示APP里的Isolates,每个APP都有一个root Isolates。
Isolates是用一个饼图显示,这个饼图有很多组成部分,我们把这些叫做tags,这些tags用来代表在VM里不同的执行列表,包括User TAG 和 VM TAG:
-
User TAG
用户自定义的TAG,使用方式如下:
import 'dart:developer'; var customTag = new UserTag('MyTag'); // Save the previous tag when installing the custom tag. var previousTag = customTag.makeCurrent(); // your code here // Restore the previous tag. previousTag.makeCurrent(); 复制代码
-
VM TAG
VM TAG是系统定义的,在整个UI中使用,有:
- CompileOptimized, CompileScanner, CompileTopLevel, CompileUnoptimized :编译Dart代码
- GCNewSpace : 新生代的垃圾收集
- GCOldSpace : 老生代的垃圾收集
- Idle : 不是VM TAG,但是用来标识Isolate空闲的占比
- Native : 执行Native代码,dart:io库使用的C ++代码 或者 平台相关代码(Platform Channel)
- Runtime : 执行 Runtime 代码
- Dart : 执行 自己的业务Dart 代码
- VM :创建isolate,和其他未被覆盖的部分
图像的右边还有一系列链接,代表着不同的功能。
debug
可以设置断点并调试您的应用程序。 复制代码
如何设置debugger,看 dart-lang.github.io/observatory…
class hierarchy
显示应用程序的类层次结构。 复制代码
cpu profile
显示当前isolate的CPU使用数据 复制代码
图表的下部按cpu占用比例做了一个列表,反映的是函数的调用次数和执行时间(划重点)。一般排在前面的函数(这些函数是?有待学习)都不是我们写的dart代码。如果你发现自己的某个函数调用占比反常,那么可能存在问题。
具体使用的地址: dart-lang.github.io/observatory…
cpu profile (table)
和cpu profile一样,但是是以表格的形式来展示 复制代码
allocation profile
显示isolate已分配的内存。通过这个面板你能看到新生代/老生代的内存大小和占比;每个类型所占用的内存大小。 复制代码
Heap 堆,动态分配的Dart对象所在的内存空间
New generation: 新创建的对象,一般来说对象比较小,生命周期短,如local 变量。在这里GC活动频繁 Old generation:从GC中存活下来的New generation将会提拔到老生代Old generation,它比新生代空间大,更适合大的对象和生命周期长的对象
通过这个面板你能看到新生代/老生代的内存大小和占比;每个类型所占用的内存大小。 为了debug的方便,我们可以获取到某段时间的内存分配情况:点击Reset Accumulator按钮,把数据清零,执行一下要测试的程序,点击刷新。 为了检查内存泄露,我们可以点击GC按钮,手动执行GC。 Accumulator Size:自点击Reset Accumulator以来,累加对象占用内存大小 Accumulator Instances:自点击Reset Accumulator以来,累加实例个数 Current Size:当前对象占用内存大小 Current Instances:当前对象数量
具体使用的地址: dart-lang.github.io/observatory…
heap snapshot
堆快照 复制代码
heap map
将分配的内存显示为颜色块 复制代码
heap map 面板能查看old generation中的内存状态 它以颜色显示内存块。 每个内存页面(page of memory)为256 KB,每页由水平黑线分隔。 像素的颜色表示对象的类ID - 例如,蓝色表示字符串,绿色表示双精度表。 可用空间为白色,指令(代码)为紫色。 如果启动垃圾收集(使用“分配配置文件”屏幕中的GC按钮),堆映射中将显示更多空白区域(可用空间)。 将光标悬停在上面时,顶部的状态栏显示有关光标下像素所代表的对象的信息。 显示的信息包括该对象的类型,大小和地址。 当你看到白色区域中有很多分散的其它颜色,说明存在内存碎片化,可能是内存泄露导致的。
具体使用看: dart-lang.github.io/observatory…
啥也没有
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
跨境电商——阿里巴巴速卖通宝典
速卖通大学 编著 / 电子工业出版社 / 2015-1 / 69.00元
跨境电商作为中国电子商务发展的最新趋势,受到了全社会越来越多的重视,大量中国卖家借助阿里巴巴速卖通平台,将产品直接售卖到全球的消费者手中,通过这条短得不能再短的交易链,获得了丰厚的回报。 但同时,跨境电商这一贸易形式,对卖家的综合素质要求比较高:卖家要对海外市场比较熟悉,对跨境物流有所把握,能够用外语进行产品介绍和客户交流,通过跨境结算拿到货款……诸如此类的门槛,让不少新卖家心生畏难,而所有......一起来看看 《跨境电商——阿里巴巴速卖通宝典》 这本书的介绍吧!
XML 在线格式化
在线 XML 格式化压缩工具
html转js在线工具
html转js在线工具