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…

啥也没有


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

查看所有标签

猜你喜欢:

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

Beginning ARKit for iPhone and iPad

Beginning ARKit for iPhone and iPad

Wallace Wang / Apress / 2018-11-5 / USD 39.99

Explore how to use ARKit to create iOS apps and learn the basics of augmented reality while diving into ARKit specific topics. This book reveals how augmented reality allows you to view the screen on ......一起来看看 《Beginning ARKit for iPhone and iPad》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具