Android内存分析工具集【4】Android Studio Profiler Memory

Memory Profiler是Android Profiler的一个组件, 用于帮助分析内存泄露和内存抖动的问题。

Memory Profiler的功能包括:

展示应用内存使用情况的实时图像、抓取内存的dump信息、强制垃圾回收及追踪内存分配。

2.1 开启步骤

打开Memory Profiler的步骤为:

 依次点击Android Studio的View → Tool Windows → Android Profiler,

或直接点击工具栏Android Profiler对应的图标

2、 PC连接Android终端后,在Android Profiler对应的区域选择接的设备和需要监控的进程:
Android内存分析工具集【4】Android Studio Profiler Memory

3、 点击Android Profiler界面中MEMORY区域的任意位置,即可开启Memory Profiler,如下图所示:
Android内存分析工具集【4】Android Studio Profiler Memory

界面介绍
打开Memory Profiler后,主界面如下所示(为了方便,这里直接盗取Android技术文档中的图):
Android内存分析工具集【4】Android Studio Profiler Memory
其中:
标注1对应的按键用于强制内存回收。

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

标注3对应的按键用于记录内存的分配信息(连接Android 7.1及以下才会有此按键)。
初次点击时,对应统计的开始时间点;再次点击时,对应统计的结束时间点。
进程在两个时间点之间的内存分配信息,将被Memory Profiler记录和分析。

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

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

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

标注7对应的区域用于显示内存使用情况对应的时间轴(与标注6结合,就可以看出各事件带来的内存变化情况)。
需要说明的是,标注7对应区域显示的内容包括:
不同类型内存占用情况对应的图像;
分配对象数量对应的短画线;
内存回收事件发生的时机。

2.3 统计的数据类型及含义
Memory Profiler主要根据Android系统提供的信息,
统计app独自占用内存,即不统计app与系统或其它app共有的内存。

Memory Profiler统计内存的种类如下图所示:
Android内存分析工具集【4】Android Studio Profiler Memory
如上图所示,其中:
Java表示Java代码或Kotlin代码分配的内存;

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

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

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

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

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

Allocated表示Java或Kotlin分配对象的数量(Android8.0以下时,仅统计Memory Profiler启动后,进程再分配的对象数量;
8.0以上时,由于系统内置了统计工具,Memory Profiler可以得到整个app启动后分配对象的数量)。

 

转自:https://blog.csdn.net/Gaugamela/article/details/79027538