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

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

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

35036dc6922911b96849ed0d2a6c1b9d.png

运行后如下:

0aad9bd71af8207c4cc28b45e39d22f6.png

二.内存分析:

如下图,选中MEMORY:

cf676cb991f91593a2863656a2a4c0f7.png

(1)各按钮说明:

a377d7a59bebb48432f25a70eac187ae.png

其中:

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

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

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

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

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

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

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

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

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

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

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

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

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

(2)内存使用说明:

20847b1814f0ef70188bb5319e34567f.png

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

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

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

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

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

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

(3)查看内存使用情况

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

8d9e83ca7f6c935deff1d96634142e2c.png

占用信息如图:

2c81f48808956414f5510d829f862729.png

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

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

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

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

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

225a51135ec78bb25630db76f4d6c72e.png

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐