Android的内存性能分析工具

来源:互联网 发布:python数据分析课程 编辑:程序博客网 时间:2024/05/16 04:38

概述:

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工具:


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

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

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

Allocation Tracker工具:


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和内存的实时状态就显示出来了.


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

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

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

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


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


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.


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


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


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

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


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按钮.


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

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

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


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

0 0