Android性能优化之分析工具Profiler的使用

Profiler 是AndroidStudio3.0之后新加的功能,Profiler分为三大块分析:CPU、内存和网络,本篇主要介绍内存分析。

一.首先我们开下Profiler怎么开始使用?

点击下图按钮运行APP就会开启Profiler分析:

Android性能优化之分析工具Profiler的使用

运行后如下:

Android性能优化之分析工具Profiler的使用

 

二.内存分析:

如下图,选中MEMORY:

Android性能优化之分析工具Profiler的使用

(1)各按钮说明:

Android性能优化之分析工具Profiler的使用

其中:

标注1对应的按键用于强制内存回收。

 

标注2对应的按键用于抓取进程内存的dump信息。

 

标注3对应的按键用于记录内存的分配信息(连接Android 7.1及以下才会有此按键)。

初次点击时,对应统计的开始时间点;再次点击时,对应统计的结束时间点。

进程在两个时间点之间的内存分配信息,将被Memory Profiler记录和分析。

 

标注4对应的区域用于缩放时间轴。

 

标注5对应的按键用于显示实时的内存数据。

 

标注6对应的区域用于记录事件发生的时间点及大致持续的时间(例如activity状态改变、用户操作界面等事件)。

 

标注7对应的区域用于显示内存使用情况对应的时间轴(与标注6结合,就可以看出各事件带来的内存变化情况)。

需要说明的是,标注7对应区域显示的内容包括:

不同类型内存占用情况对应的图像;

分配对象数量对应的短画线;

内存回收事件发生的时机。

(2)内存使用说明:

Android性能优化之分析工具Profiler的使用

Java表示Java代码或Kotlin代码分配的内存;

 

Native表示C或C++代码分配的内存(即使App没有native层,调用framework代码时,也有可能触发分配native内存);

 

Graphics表示图像相关缓存队列占用的内存;

 

Stack表示native和java占用的栈内存;

 

Code表示代码、资源文件、库文件等占用的内存;

 

Others表示无法明确分类的内存;

 

(3)查看内存使用情况

点击抓取dump信息按钮可以抓取一段时间内APP占用内存的信息

Android性能优化之分析工具Profiler的使用

占用信息如图:

Android性能优化之分析工具Profiler的使用

Allocations:表示分配对象的总数量

Native Size:表示nativie层占用内存的大小

Shallow Size:表示对象使用Java内存的大小,单位为byte

Retained Size表示对象占用的实际内存大小,大于等于Shallow Size

点击对象可查看Instance View,可查看具体的对象和方法内存使用情况:

Android性能优化之分析工具Profiler的使用