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

free-jdx 2021-03-26 15:39:50 4875
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工具

2.2 heap dumps

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

2.3 dump hprof file

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

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文件,工具解析后会出现如下界面

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

3.Android层应用的内存泄露

基本步骤

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

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 96 8 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区