Profile是AndroidStudio3.0之后新加的功能,Profile分为三大块分析:CPU、内存和网络,本篇主要介绍内存分析。
一.首先我们开下Profile怎么开始使用?
点击下图按钮运行APP就会开启Profile分析:
运行后如下:
二.内存分析:
如下图,选中MEMORY:
(1)各按钮说明:
其中:
标注1对应的按键用于强制内存回收。
标注2对应的按键用于抓取进程内存的dump信息。
标注3对应的按键用于记录内存的分配信息(连接Android 7.1及以下才会有此按键)。
初次点击时,对应统计的开始时间点;再次点击时,对应统计的结束时间点。
进程在两个时间点之间的内存分配信息,将被Memory Profiler记录和分析。
标注4对应的区域用于缩放时间轴。
标注5对应的按键用于显示实时的内存数据。
标注6对应的区域用于记录事件发生的时间点及大致持续的时间(例如activity状态改变、用户操作界面等事件)。
标注7对应的区域用于显示内存使用情况对应的时间轴(与标注6结合,就可以看出各事件带来的内存变化情况)。
需要说明的是,标注7对应区域显示的内容包括:
不同类型内存占用情况对应的图像;
分配对象数量对应的短画线;
内存回收事件发生的时机。
(2)内存使用说明:
Java表示Java代码或Kotlin代码分配的内存;
Native表示C或C++代码分配的内存(即使App没有native层,调用framework代码时,也有可能触发分配native内存);
Graphics表示图像相关缓存队列占用的内存;
Stack表示native和java占用的栈内存;
Code表示代码、资源文件、库文件等占用的内存;
Others表示无法明确分类的内存;
(3)查看内存使用情况
点击抓取dump信息按钮可以抓取一段时间内APP占用内存的信息
占用信息如图:
Allocations:表示分配对象的总数量
Native Size:表示nativie层占用内存的大小
Shallow Size:表示对象使用Java内存的大小,单位为byte
Retained Size表示对象占用的实际内存大小,大于等于Shallow Size
点击对象可查看Instance View,可查看具体的对象和方法内存使用情况: