Android的内存性能分析工具
2017-04-26 11:44
429 查看
概述:
Heap Viewer, Memory Monitor和AllocationTracker是附加的三种可以帮助你可视化APP内存用量的工具.1. 使用Memory Monitor Tool可以找出是否有良的垃圾回收(GC)事件可能会导致APP的性能问题.
2. 运行Heap Viewer可以识别出那些不必要的或意外的对象类型.
3. 使用Allocation Tracker来识别你的代码中哪里可能会存在问题.
Memory Monitor工具:
![](http://www.th7.cn/d/file/p/2016/02/18/a818821a5a0510c29cb94ff5fb8d32d0.jpg)
l 在一张图表中展示APP中可用的和已经使用的内存,以及它们随时间的变化, 使用骤降来表示垃圾回收.
l 提供一个快速的方法来测试APP是否因为过多的垃圾回收而变得缓慢.
l 提供一个快速的方法来查看APP是否因为内存不足而崩溃.
l 运行在你的APP中并大概每秒更新一次.
l 帮助快速识别可能的内存泄露.
l 帮助识别你的APP的GC模式, 并判断它们是否正常, 以及你期待的是什么样子.
l 很容易使用并已于解析.
l 但是MemoryMonitor不能告诉你哪个对象导致了你的问题, 或者它在代码中的什么位置.
Heap Viewer工具:
![](http://www.th7.cn/d/file/p/2016/02/18/bea1112a699ed41c76aac971dcb05443.jpg)
l 显示了一些通过类型分配的对象的快照.
l 每次垃圾回收事件发生的时候数据的采样(无论是自然发生的还是你触发的).
l 帮助识别哪个对象类型参与了内存泄露.
Allocation Tracker工具:
![](http://www.th7.cn/d/file/p/2016/02/18/8c0863bfe487cec9f414662c72e5b21a.jpg)
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和内存的实时状态就显示出来了.
![](http://www.th7.cn/d/file/p/2016/02/18/40c041943360bb316ed87143a8e83450.jpg)
4. 一旦Memory Monitor开始跟踪你的设备, 就会显示一个图表, 实时跟踪内存的用量. 其中深蓝色表示你的APP当前使用的内存用量. 浅蓝色表示可用的, 未分配的内存.
5. 随着时间的推移, 这张图表将会被更新, 显示内存用量的变化.
6. 随着你的APP分配和释放内存, 分配的数量将会在图表中显示.
7. 当你看到分配的内存突然减少了一大块儿, 表示发生了一次垃圾回收(GC).
![](http://www.th7.cn/d/file/p/2016/02/18/738b705f0870029c2aa708e6ab18fd77.jpg)
8. 你可以通过点击垃圾车图标来强制执行一次垃圾回收事件.
![](http://www.th7.cn/d/file/p/2016/02/18/99f01f5da968bc026b674b644a842bc6.jpg)
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.
![](http://www.th7.cn/d/file/p/2016/02/18/26365fe79d087eff62882894196273cc.jpg)
4. 在设备栏中下拉选择你想要监测的APP.
![](http://www.th7.cn/d/file/p/2016/02/18/ed836ea0bff29c099048042a920beecd.jpg)
5. 要保存一个堆的快照, 点击Dump Java Heap图标. 堆的快照文件将会以Snapshot-yyyy.mm.dd-hh.mm.ss.hprof这样格式的文件名显示在Captures页面中. 也可以在下图的位置找到它.
![](http://www.th7.cn/d/file/p/2016/02/18/5d6a2be5bfead3f9bc1de488f2b629a8.jpg)
6. 注意每次GC之后都会执行Heap update.
7. 点击Initiate CG图标来触发一次垃圾回收事件.
![](http://www.th7.cn/d/file/p/2016/02/18/9ef41a89fe12bea9a6abd5394ab0cd7e.jpg)
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按钮.
![](http://www.th7.cn/d/file/p/2016/02/18/55444fbc498a04003cc79f9f4e0edc50.jpg)
7. 几秒种后, 会打开一个你记录的数据的面板. 注意设备上的分配记录, 分析这些信息.
8. 面板上会显示一个列表. 每行代表一个内存申请事件. 每列表示关于申请的信息, 比如对象类型和线程, 还有它的大小. 列是可以移动, 调整大小和排列的. 使用过滤器来显示你关心的APP.
9. 点击一个对象来查看它的完整堆栈跟踪信息.
![](http://www.th7.cn/d/file/p/2016/02/18/cc68a44aa18d8bcd03edb1d42d1d57ae.jpg)
参考: http://developer.android.com/tools/performance/comparison.html
相关文章推荐
- Android性能之一续:内存泄露的分析、处理工具
- Android性能优化之内存泄漏分析工具LeakCanary
- Sunny的小窝 (Android系统性能分析工具)
- Android初级教程_内存分析工具MemoryAnalizer
- 天天记录 - Android内存分析工具DDMS heap + MAT 安装和使用
- Android内存分析工具
- JavaME 程序性能调优内存分析工具 Memory Monitor 的使用
- 天天记录 - Android内存分析工具DDMS heap + MAT 安装和使用
- Android 内存分析工具MemoryAnalizer
- Android内存监测工具DDMS->Heap,内存分析工具->MAT
- Android内存分析工具
- android性能分析工具 traceview
- .NET程序内存分析工具CLRProfiler的使用(性能测试)
- Android系统性能分析工具
- 几个ajax js性能优化和内存泄露问题及检测分析工具
- Android内存分析工具
- Android 内存分析工具 MAT(Memory Analyzer Tool)(转)
- valgrind: 一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具
- Android 内存分析工具