Flutter性能监控工具(3)--- Observatory使用

栏目: IOS · Android · 发布时间: 5年前

内容简介:下图是Observatory的主页面:表示当前所在的位置

Flutter性能监控工具(1)--- Observatory简介 主要讲了如何打开Observatory,现在讲一下如何使用Observatory里的各个功能来分析性能问题,

下图是Observatory的主页面:

Flutter性能监控工具(3)--- Observatory使用

最上面的蓝色导航栏

表示当前所在的位置

  1. vm@ws://127.0.0.1:50579/ws :表示当前连接的VM

    鼠标放在这个上面,会看到这个,表示当前APP的main():

Flutter性能监控工具(3)--- Observatory使用
  1. 右边的Refresh :刷新数据

VM

这里显示当前VM的信息

  1. name : 当前VM的名字
  2. version :Dart的版本,APP build的时间,运行在哪个平台上
  3. embedder :嵌入的平台
  4. started at :VM启动时的时间戳
  5. uptime :VM已运行的时长
  6. refreshed at :上次采样数据的时间
  7. pid : 进程ID
  8. peak memory :APP运行时用的峰值内存
  9. current memory : APP当前用的内存
  10. native zone memory :native 原生内存
  11. native heap memory :native 堆内存
  12. native heap allocatioon count : native 堆对象数量
  13. flag :一些标记位
  14. timeline :工具
  15. 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中使用,有:

    1. CompileOptimized, CompileScanner, CompileTopLevel, CompileUnoptimized :编译Dart代码
    2. GCNewSpace : 新生代的垃圾收集
    3. GCOldSpace : 老生代的垃圾收集
    4. Idle : 不是VM TAG,但是用来标识Isolate空闲的占比
    5. Native : 执行Native代码,dart:io库使用的C ++代码 或者 平台相关代码(Platform Channel)
    6. Runtime : 执行 Runtime 代码
    7. Dart : 执行 自己的业务Dart 代码
    8. VM :创建isolate,和其他未被覆盖的部分

图像的右边还有一系列链接,代表着不同的功能。

debug

可以设置断点并调试您的应用程序。
复制代码

如何设置debugger,看 dart-lang.github.io/observatory…

class hierarchy

显示应用程序的类层次结构。
复制代码
Flutter性能监控工具(3)--- Observatory使用

cpu profile

显示当前isolate的CPU使用数据
复制代码

图表的下部按cpu占用比例做了一个列表,反映的是函数的调用次数和执行时间(划重点)。一般排在前面的函数(这些函数是?有待学习)都不是我们写的dart代码。如果你发现自己的某个函数调用占比反常,那么可能存在问题。

Flutter性能监控工具(3)--- Observatory使用

具体使用的地址: dart-lang.github.io/observatory…

cpu profile (table)

和cpu profile一样,但是是以表格的形式来展示
复制代码
Flutter性能监控工具(3)--- Observatory使用

allocation profile

显示isolate已分配的内存。通过这个面板你能看到新生代/老生代的内存大小和占比;每个类型所占用的内存大小。
复制代码
Flutter性能监控工具(3)--- Observatory使用

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

堆快照
复制代码
Flutter性能监控工具(3)--- Observatory使用

heap map

将分配的内存显示为颜色块
复制代码
Flutter性能监控工具(3)--- Observatory使用

heap map 面板能查看old generation中的内存状态 它以颜色显示内存块。 每个内存页面(page of memory)为256 KB,每页由水平黑线分隔。 像素的颜色表示对象的类ID - 例如,蓝色表示字符串,绿色表示双精度表。 可用空间为白色,指令(代码)为紫色。 如果启动垃圾收集(使用“分配配置文件”屏幕中的GC按钮),堆映射中将显示更多空白区域(可用空间)。 将光标悬停在上面时,顶部的状态栏显示有关光标下像素所代表的对象的信息。 显示的信息包括该对象的类型,大小和地址。 当你看到白色区域中有很多分散的其它颜色,说明存在内存碎片化,可能是内存泄露导致的。

具体使用看: dart-lang.github.io/observatory…

啥也没有


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

跨境电商——阿里巴巴速卖通宝典

跨境电商——阿里巴巴速卖通宝典

速卖通大学 编著 / 电子工业出版社 / 2015-1 / 69.00元

跨境电商作为中国电子商务发展的最新趋势,受到了全社会越来越多的重视,大量中国卖家借助阿里巴巴速卖通平台,将产品直接售卖到全球的消费者手中,通过这条短得不能再短的交易链,获得了丰厚的回报。 但同时,跨境电商这一贸易形式,对卖家的综合素质要求比较高:卖家要对海外市场比较熟悉,对跨境物流有所把握,能够用外语进行产品介绍和客户交流,通过跨境结算拿到货款……诸如此类的门槛,让不少新卖家心生畏难,而所有......一起来看看 《跨境电商——阿里巴巴速卖通宝典》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具