Android 的性能工具用法 II-内存分析工具I

概述:

Heap Viewer, Memory Monitor和AllocationTracker是附加的三种可以帮助你可视化APP内存用量的工具.

1.      使用Memory Monitor Tool可以找出是否有良的垃圾回收(GC)事件可能会导致APP的性能问题.

2.      运行Heap Viewer可以识别出那些不必要的或意外的对象类型.

3.      使用Allocation Tracker来识别你的代码中哪里可能会存在问题.

Memory Monitor工具:


l  在一张图表中展示APP中可用的和已经使用的内存,以及它们随时间的变化, 使用骤降来表示垃圾回收.

l  提供一个快速的方法来测试APP是否因为过多的垃圾回收而变得缓慢.

l  提供一个快速的方法来查看APP是否因为内存不足而崩溃.

l  运行在你的APP中并大概每秒更新一次.

l  帮助快速识别可能的内存泄露.

l  帮助识别你的APP的GC模式, 并判断它们是否正常, 以及你期待的是什么样子.

l  很容易使用并已于解析.

l  但是MemoryMonitor不能告诉你哪个对象导致了你的问题, 或者它在代码中的什么位置.

Heap Viewer工具:

Android 的性能工具用法 II-内存分析工具I_第1张图片

l  显示了一些通过类型分配的对象的快照.

l  每次垃圾回收事件发生的时候数据的采样(无论是自然发生的还是你触发的).

l  帮助识别哪个对象类型参与了内存泄露.

Allocation Tracker工具:

Android 的性能工具用法 II-内存分析工具I_第2张图片

l  显示你的代码在什么时候以及在哪里申请了对象类型, 以及它们的大小, 分配的线程, 和堆栈的跟踪信息.

l  通过反复的分配/释放的方式来帮助识别内存流失.

l  可以被用来跟HeapViewer组合来跟踪内存泄露. 比如, 如果你看到一个Bitmap对象常驻在堆中, 你可以使用Allocation Tracker找到它的分配地址/位置.

l  但是, 需要花时间来学习分析这个工具的输出结果.

下面详细介绍它们的用法:

Memory Monitor使用:

这里介绍了Memory Monitor的基础用法和使用流程. 它会报告一个实时的APP分配内存情况.

先决条件:

l  一个开启了开发者选项的移动设备.

l  一个APP, 可以通过USB调试.

用法:

1.      如果你正在使用一个移动设备, 将它连接到电脑上.

2.      打开Android Studio, 编译源代码, 在设备或者模拟器上运行.

3.      在Android Studio中, 选择Tools>Android>Memory Monitor(可能只在旧版本中找得到, 1.4.1中没找到这个菜单). 你还可以在软件左下角点击AndroidMonitor, CPU和内存的实时状态就显示出来了.

Android 的性能工具用法 II-内存分析工具I_第3张图片

4.      一旦Memory Monitor开始跟踪你的设备, 就会显示一个图表, 实时跟踪内存的用量. 其中深蓝色表示你的APP当前使用的内存用量. 浅蓝色表示可用的, 未分配的内存.

5.      随着时间的推移, 这张图表将会被更新, 显示内存用量的变化.

6.      随着你的APP分配和释放内存, 分配的数量将会在图表中显示.

7.      当你看到分配的内存突然减少了一大块儿, 表示发生了一次垃圾回收(GC).

Android 的性能工具用法 II-内存分析工具I_第4张图片

8.      你可以通过点击垃圾车图标来强制执行一次垃圾回收事件.

Android 的性能工具用法 II-内存分析工具I_第5张图片

Heap Viewer的使用:

Heap Viewer实时的显示你的APP为哪种类型的对象分配了内存,多少内存, 以及在堆(heap)上的大小. 它可以:

l  让你感知到APP分配和释放内存.

l  识别内存泄露.

先决条件:

l  一个移动设备, 运行Android 5.0及以上版本, 并开启了开发者选项.

l  APP代码.

使用方法:

1.      连接你的设备和电脑.

2.      打开Android Studio, 运行你的APP.

3.      从Android Studio中开启Android Device Monitor, Tools>Android>Android Device Monitor.

Android 的性能工具用法 II-内存分析工具I_第6张图片

4.      在设备栏中下拉选择你想要监测的APP.

Android 的性能工具用法 II-内存分析工具I_第7张图片

5.      要保存一个堆的快照, 点击Dump Java Heap图标. 堆的快照文件将会以Snapshot-yyyy.mm.dd-hh.mm.ss.hprof这样格式的文件名显示在Captures页面中. 也可以在下图的位置找到它.

Android 的性能工具用法 II-内存分析工具I_第8张图片

6.      注意每次GC之后都会执行Heap update.

7.      点击Initiate CG图标来触发一次垃圾回收事件.

Android 的性能工具用法 II-内存分析工具I_第9张图片

8.      双击heap快照文件来打开heap viewer, 在这里可以查看当前堆使用的详情.

Allocation Tracker的使用:

Allocation Tracker可以记录一个APP的内存分配并列出所有分配对象用于分析它们的堆栈, 大小和分配代码. 它可以在代码中找出内存使用低效的地方.

在使用Allocation Tracker之前, 使用Memory Monitor分析你的代码. 如果你在短时间内看到很多垃圾回收事件, 使用Heap Viewer来识别候选的对象类型, 然后用Allocation Tracker来确定是在代码的哪个部分发生的.

先决条件:

l  一个移动设备, 开启开发者选项.

l  APP代码.

Allocation Tracker用法:

Allocation Tracker记录分析执行期间的每次内存分配. 你可以启动它开始记录, 记录结束后点击停止.

1.      连接你的设备和电脑.

2.      打开Android Studio, 运行APP.

3.      点击Android Studio底部的Android按钮(较新的版本是Android Monitor).

4.      如果你使用的是Android Monitor, 那么点击Android DDMS工具栏的RECORD按钮. 在Android Studio内部则点击Start Allocation Tracking.

5.      与APP交互.

6.      点击STOP按钮.

Android 的性能工具用法 II-内存分析工具I_第10张图片

7.      几秒种后, 会打开一个你记录的数据的面板. 注意设备上的分配记录, 分析这些信息.

8.      面板上会显示一个列表. 每行代表一个内存申请事件. 每列表示关于申请的信息, 比如对象类型和线程, 还有它的大小. 列是可以移动, 调整大小和排列的. 使用过滤器来显示你关心的APP.

9.      点击一个对象来查看它的完整堆栈跟踪信息.

Android 的性能工具用法 II-内存分析工具I_第11张图片

参考: http://developer.android.com/tools/performance/comparison.html

你可能感兴趣的:(Android,性能,Android,工具)