Android JAVA 内存泄漏MAT检查工具使用说明

1. Memory Analyzer简介

Eclipse MAT 是Memory Analyzer 工具的简称. MAT主要用来分析JAVA程序堆空间,帮助JAVA开发者分析应用的内存泄露、应用oom和内存使用优化。需要快速了解下MAT工具使用说明:

MAT wiki : http://wiki.eclipse.org/index.php/MemoryAnalyzer MAT download : http://www.eclipse.org/mat/downloads.php MAT 调试参考 : http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.mat.ui.help/welcome.html

2. Android Memory Analysis

Androidt日常开发过程中,应用层内存问题主要有以下3类: 1). Android 应用进程OOM 2). Android 应用进程memory leak 3). Android 应用内存优化 4) Android 应用性能分析(减少GC引起的性能损耗) Android 应用内存分析可以借助Android sdk tool提供的DDMS工具DDMS工具中提供了Allocation Tacker 、heap dumps 和dump hprof file工具进行问题分析.

2.1 Allocation Tacker

DDMS中的Allocation Tacker可以追踪Android系统中的进程内存动态使用情况,从追踪的过程中大概的定位下进程中消耗内存的地方,操作步骤如下,打开DMMS工具

Android JAVA 内存泄漏MAT检查工具使用说明

Android JAVA 内存泄漏MAT检查工具使用说明

2.2 heap dumps

heap dumps按钮下可以追踪到进程空间的heap变化,观察heap size、heap allocted的分布.

Android JAVA 内存泄漏MAT检查工具使用说明

2.3 dump hprof file

dump hprof file按钮实际上是一种“快照”机制,将进程的heap数据保存为一种HPROF二进制格式文件,这种文件 通过转换格式可以直接使用Eclipse Memory Analyzer(MAT)工具来分析。如果想产生更精确的dump数据,可以在程序中使用android.os.Debug.dumpHprofData() 方法。

Android JAVA 内存泄漏MAT检查工具使用说明

DDMS产生的.hprof文件是Dalvik格式,因此从Dalvik格式转换成J2SE HPROF格式。 Android SDK提供的hprof-conv工具可以完成这一转换: hprof-conv dump.hprof converted-dump.hprof

接下来,就可以使用eclipse MAT工具打开hprof格式文件进行heap的分析。 2.4 Eclipse MAT分析heap

Mat界面启动后,操作工具栏选择File->Open Heap Dump,打开转换后的*.hprof文件,工具解析后会出现如下界面

Android JAVA 内存泄漏MAT检查工具使用说明

界面的左下角有直方图Histogram视图区,该区会显示heap中每个类的实例可排序列表,其中shallow heap(所有实例的内存使用总和),或者retained heap(所有类实例被分配的内存总和,里面也包括他们所有引用的对象)。 http://chiyx.iteye.com/blog/1528782 待续

3.Android层应用的内存泄露

基本步骤

使用DDMS工具观察应用进程的heap 变化状态,同时不断的操作当前应用,注意观察data object的Total size. 应用代码如果逻辑良好,正常亲狂下Total size会稳定在一个范围内,不出出现太大的增长。因此创建对象的过程中GC机制也在回收内存,因此内存量会比较稳定。

如果应用代码中存在对象引用没有释放,每次GC后,data object不会有明显的回落,反而会随着应用特定操作的增多,heap不断累加,直到后面heap 达到了dalvik heapsize极限,logcat中可以看到触发oom栈溢出信息。

文档参考: http://blog.csdn.net/fulinwsuafcie/article/details/8363218

http://www.open-open.com/lib/view/open1330605577327.html

http://kohlerm.blogspot.hk/2010/02/android-memory-usage-analysis-slides.html

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Android JAVA 内存泄漏MAT检查工具使用说明 https://www.yhzz.com.cn/a/12796.html

上一篇 2023-05-11
下一篇 2023-05-11

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。