MAT分析内存问题简要

引用博文

1)http://blog.csdn.net/AlbertFly/article/details/51984882

2)http://blog.csdn.net/zgmzyr/article/details/8232323



目录

1)MAT的安装和文件导入

2)MAT基本分析-查看潜在的内存泄漏

3)MAT基本分析-结合代码查看应该回收的对象

4)MAT基本分析-多文件对比

5)备注:需要了解的一些概念



正文

1)MAT的安装和文件导入

DDMS导出的文件要经过转换才能被 MAT识别,Android SDK提供了这个工具 hprof-conv (位于sdk/tools下)
使用示例“hprof-conv 源文件.hprof 转换后文件.hprof
“ 

MAT可以使用转换后的文件


2)MAT基本分析-查看潜在的内存泄漏

2.1)导入文件后,如下图所示,可以查看当前内存情况,菜单栏提供了对应的工具,可以查看对应的信息



点击“Leak Suspects”,查看MAT对当前文件的潜在内存泄漏信息,列出内存占用量大,重复对象多的可疑问题



点击详情,结合代码查看该信息是否有用



3)MAT基本分析-结合代码查看应该回收的对象


3.1)点击进入查看对象列表,结合代码查看当前应该回收的对象当前是否存在,使用“Group by package”进行分类,方便从自身代码角度查看问题


问题一般出在占用较多的地方


4)MAT基本分析-多文件对比


5)备注:需要了解的一些概念

5.1)引用

  • Strong reference : 就是我们new出来的对象,但是还是被持有的应用,垃圾回收时不会回收这个应用
  • soft reference   : 我们new出来的对象,但是已经不被具体对象持有,常见的就是缓存中的对象引用,垃圾回收在内存还够的时候不会回收该部分内存信息,只有在内存不够时才会回收这块引用的对象
  • weak reference   : 当对象不在有强引用时候,垃圾回收时立刻回收。
  • Phantom reference : 不会在内存中出现,因为它一般是同ReferenceQueue一起出现,来跟踪对象是否还是保持强引用。

5.2)术语

shallow size:对象自身中有的内存大小 

retained size:对象自身大小 + 该对象直接或是间接引用对象的shallow size

GC Roots:所有的对象引用refer chains的起点。


以上左图中以object1来说,单独一个object1大小就是shallow size,object1及所有蓝色对象就是该对象直接或是间接引用的就是retained size。

5.3)查看对象

list objects -- with outgoing references : 查看这个对象持有的外部对象引用。

list objects -- with incoming references : 查看这个对象被哪些外部对象引用。

show objects by class  --  with outgoing references :查看这个对象类型持有的外部对象引用

show objects by class  --  with incoming references :查看这个对象类型被哪些外部对象引用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MAT (Memory Analyzer Tool) 是一款Java内存分析工具,用于帮助开发人员识别和解决Java应用程序中的内存问题。下载MAT可以通过以下步骤进行: 1. 打开Eclipse IDE或访问Eclipse官方网站(https://www.eclipse.org/mat/)。 2. 在"Eclipse Downloads"页面中,选择适合您操作系统的Eclipse版本,然后点击"Download"按钮。 3. 完成下载后,解压缩下载的文件,然后打开Eclipse IDE。 4. 在Eclipse IDE中,选择 "Help" 菜单,然后点击 "Eclipse Marketplace"。 5. 在"Eclipse Marketplace"窗口中,搜索 "Memory Analyzer"。 6. 从搜索结果中,选择 "Memory Analyzer" 插件,并点击 "Go to Marketplace"。 7. 在新打开的网页上,点击 "Install"按钮,并按照提示完成插件的安装。 8. 插件安装完成后,重新启动Eclipse IDE。 MAT下载完成后,可以通过以下步骤进行内存分析: 1. 在Eclipse IDE中,打开已经运行的Java应用程序的Heap Dump文件(以"hprof"扩展名结尾)。 2. 选择 "File" 菜单,然后点击 "Open Heap Dump"。 3. 在弹出的对话框中,浏览并选择相应的Heap Dump文件,然后点击 "Open"。 4. MAT将会加载并分析Heap Dump文件,这可能需要一些时间,取决于文件的大小。 5. 在MAT分析结果视图中,可以通过不同的选项和功能来识别内存问题,比如查找内存泄漏、查看对象实例、查看对象引用关系等。 6. 根据分析结果,可以采取相应的措施来优化内存使用,并解决应用程序的内存问题。 通过使用MAT工具进行内存分析,开发人员可以更好地理解Java应用程序的内存使用情况,并定位和修复潜在的内存问题,从而提高应用程序的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值