Android Profiler使用详解

本文仅个人便于阅读查看存档使用

工具打开

在这里插入图片描述

PC用adb连接上android设备

选则设备和需要检测的应用
在这里插入图片描述

CPU相关

在这里插入图片描述
在这里插入图片描述
APP:当前监控程序CPU占用率
Others:其他程序CPU占用率
Threads:当前系统运行线程数

绿色:线程处于运行状态或者是可运行状态;
黄色:线程处于活动状态,它正在等待I / O操作完成后继续工作;
灰色:线程处于休眠状态,不会占用任何 CPU 时间.

记录、检查函数跟
在1处选择Sampled或者Instrumented,2处按下Record开始跟踪
在这里插入图片描述

1、Call Chart

水平轴表示函数调用(或调用方)的时间,并沿垂直轴显示其被调用者。 对系统 API 的函数调用显示为橙色,对应用自有函数的调用显示为绿色,对第三方 API(包括 Java 语言 API)的函数调用显示为蓝色。 下图展示了一个调用图表示例,并描绘了给定函数的 Self time、Children time 以及总时间的概念。
相关函数可以右键Jump to source.
在这里插入图片描述
2、Flame Chart
Flame Chart 标签提供一个倒置的调用图表,其中水平轴不再代表时间线,它表示每个函数相对的执行时间。
在这里插入图片描述
3、Top Down
标签显示一个函数调用列表,在该列表中展开函数节点会显示函数的被调用方.
左边显示了函数调用列表,右边分别显示了函数执行时间和函数执行的被调用方所花时间,和总时间.

在这里插入图片描述
4、Bottom Up
标签显示一个函数调用列表,在该列表中展开函数节点将显示函数的调用方.
在这里插入图片描述

内存相关

在这里插入图片描述

1:用于强制内存回收.
2:抓取进程内存的dump信息.
3:内存分配的占比及对象个数.
4:虚线表示对象的分配数.
5:拉动时间线选取待分析的时间段的内存信息.
6:内存信息.
从6中可以观察到类的信息,点击相关类可以观察到对象信息,点击相关实例,可以观察到调用栈信息,点击调用栈可以跳转至相关代码.

关于顶部的几种内存类型介绍:
Java : java代码分配的内存
Native:c/c++代码分配的内存(有时候其实并没有使用到c/c++代码,但还是会有Native的内存分配,因为Android Framework会去通过java代码访问一些需要使用Native的资源,如图像资源Bitmap)
Graphics:图像缓存等,包括GL surfaces, GL textures等.
Stack:栈内存(包括java和c/c++)
Code:代码的内存分配(例如代码,资源,libs等等)
Other:这个是连系统都不知道是什么类型的内存,放在这里.
Allocated: jave分配的对象个数 (在Android7.1和以下的设备,这个计数是在设备连接后开始,所以并不是app启动时候的计数。Android8.0或更高,在系统里面内置的Profiler工具,所以无论什么时候连接,都是app启动时候的计数)

内存分配:
可以查看的信息:分配哪些类型的对象以及它们使用多少空间,每个分配的堆叠追踪,包括在哪个线程中,对象在何时被取消分配(Android
8.0+)。

捕获堆转储(Dump Java heap)
堆转储显示在捕获堆转储时应用中哪些对象正在使用内存,尤其是在长时间的用户会话后,堆转储会显示您认为不应再位于内存中却仍在内存中的对象,从而识别内存泄漏,在捕获堆转储后,可以查看以下信息:

应用已分配哪些类型的对象,以及每个类型分配多少;每个对象正在使用多少内存;在代码中的何处仍在引用每个对象;对象所分配到的调用堆栈(目前,如果在记录分配时捕获堆转储,则只有在
Android 7.1 及更低版本中,堆转储才能使用调用堆栈)

在这里插入图片描述
要捕获堆转储,在 Memory Profiler 工具栏中点击 Dump Java heap ,在转储期间,Java 内存量可能会暂时增加,这很正常,因为堆转储与您的应用发生在同一进程中,并需要一些内存来收集数据。
1、在上面图片1列表中可以看到如下列:

Class Name : 这个很好理解,就是类名
Alloc Count : 对象个数
Native Size :c/c++层内存大小(bytes)
Shallow Size : java层内存大小(bytes)
Retained Size :为此类的所有实例而保留的内存总大小(以字节为单位)

2、当点击app heap下拉列表会出现3个选项

Depth: 从任意 GC root 到所选实例的最短 hop 数。
Native Size: c/c++层中内存的大小(bytes)
Shallow Size:java层内存大小(bytes)
Retained Size:这个类中所引用到的对象的总大小(bytes)

网络相关

在这里插入图片描述
时间线上显示实时网络 Activity,包括发送和接收的数据以及当前的连接数,便于查看应用传输数据的方式和时间,并据此对底层代码进行适当优化。
Send:上传带宽
Received:下载带宽

参考1:https://www.jianshu.com/p/e75680772375
参考2:https://www.jianshu.com/p/b035e2a11dd8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值