android:MAT内存分析工具的使用

前言

之前看过这篇博客,《IBM使用 Eclipse Memory Analyzer 进行堆转储文件分析》。所以,想使用MAT对android app的内存进行分析。又恰好看到这篇博客《Android内存泄漏研究》,于是,我也总结一些MAT的使用。

1.在Eclipse上安装MAT,和安装其他插件一样,MAT的当前地址:http://download.eclipse.org/mat/1.4/update-site/ 安装

完成之后重启Eclipse即可。

2.在设备页面,选择包名对应的app,如图1.点击图标,等待一会,就会出现图2的分析结果。

图1

图2

根据分析的结果,我们可以看出app的内存占用情况。点击左下角action标签页的Histogram,就可以通过直方图的形式

查看各种对象的数目,以及占用的内存大小。

图 3

图3所示的对象,最多可以显示31个,但是我们可以根据包名和类名对其进行过滤。最最重要的时,我们可以右键查看

对象被哪些对象所引用,这样,我们就可以分析对象没有被GC的原因,然后检查对应的代码。

图 4

图 5

可以看出,该Activity被引用的路径。可以看出,该Activity虽然已经finish了,但是GifView仍然保存了它的引用,导致无法GC。

同样的,我们可以先从暂用内存最多的对象分析,然后查看它们的引用树。注意:并不是所有暂用内存多的对象,都会

造成内存泄露。比如一副比较大的图片,当它需要显示的时候,很显然,它对应的byte数组应当出现在内存中。

-------------------------------------------------------------------

更多交流,Android开发联盟QQ群:272209595

时间: 2024-10-14 08:59:30

android:MAT内存分析工具的使用的相关文章

Eclipse MAT内存分析工具(Memory Analyzer Tool)

MAT内存分析工具 MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找内存泄露以及查看内存消耗情况.MAT是基于Eclipse开发的,是一款免费的性能分析工具.读者可以在http://www.eclipse.org/mat/下载并使用MAT. 1 初识MAT 在分析堆快照前,首先需要导出应用程序的堆快照.在本书前文中提到的jmap.JConsole和Visual VM等工具都可用于获得Java应用程序的堆快照文件.此外,MAT本身也具有这个功能.

[Android Memory] 内存分析工具 MAT 的使用

转载自: http://blog.csdn.net/aaa2832/article/details/19419679 1 内存泄漏的排查方法 Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 : ·    heap 查看堆的分配情况 ·    allocation tracker跟踪内存分配情况 DDMS 这两项功能有助于找到内存泄漏的操作行为. Eclipse Memory Analysis Tools (MAT) 是一

Android内存分析工具DDMS heap + MAT 安装和使用

一  Java内存分析工具扫盲 如果像我一样一点都不了解,可以先进行内存分析工具扫盲 MAT介绍:     Eclipse Memory Analyzer(MAT)一个功能丰富的 JAVA 堆转储文件分析工具,可以用于发现内存漏洞和减少内存消耗. 二  Eclipse MAT插件安装 当前机器环境描述: [plain] view plaincopy 系统: Ubuntu 12.04 LTS 64 Eclipse for Mobile Developers Version: Juno Servic

Android 中使用内存监测工具Heap,及内存分析工具 MAT

无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方.Android tools中的DDMS就带有一个很不错的内存监测工具Heap(这里我使用eclipse的ADT插件,并以真机为例,在模拟器中的情况类似).用Heap监测应用进程使用内存情况的步骤如下: 1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的: 2. 将手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式

android内存优化之三内存分析工具的使用

 anroid内存分析工具的使用 一.Eclipse Heap分析内存泄露 Android开发中避免不了碰到内存泄露问题,这里先大概讲下内存泄露的基本概念:内存泄露官方的解释是是用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元,直到程序结束.它也可以理解为new的新对象用完后,该对象没有得到回收,造成的无用的对象一直占据着内存,这种无用的随着操作的次数越多,占据的内存越多,直到内存溢出程序,报错停止运行.内存溢出问题比起程序直接报错的问题更难定位,光靠阅读代码来分

Android内存分析工具

Android的一些内存知识 垃圾回收(GC) 垃圾回收包含两个过程: 判定阶段,也就是判断哪些对象可以被回收, 收集阶段,是指具体的回收策略. 判定阶段主要有两种方式 引用计数,对象每多一个引用计数加1,少一个引用计数减1,计数为0时就表示这个对象可以被回收了.但是引用计数有个缺点,不能判断循环应用的情况,所以就有了下面的方式 根搜索,从一些根对象(GCRoot)开始遍历搜索,如果一个对象无法被搜索到,说明这个对象可以被回收了. 可以作为GCRoot的对象: 1 一些虚拟机栈中的对象:2 方法

Android dumpsys 内存分析

研究了Mat和Heap的分析方法之后,尝试用其他的方式来分析下,Androiddumpsys 的方式来看下结果. 如何得出数据的操作就不说了,网上太多了,只看数据来进行分析. 如图1,启动的时候的情况 执行三次怀疑有泄露的功能之后的数据 再执行三次 再执行三次 数据分析: Native 数据代表的是JNI层的数据,从mallinfo usmblks 获得 DalviK 数据代表的是Java层的数据,从Runtime Totalmemory获得 Size 代表是能获得的最大的数据 Alloc代表的

JS内存泄漏 和Chrome 内存分析工具简介(摘)

原文地址:http://web.jobbole.com/88463/ JavaScript 中 4 种常见的内存泄露陷阱 原文:Sebastián Peyrott 译文:伯乐在线专栏作者 - ARIGATO 链接:http://web.jobbole.com/88463/ 点击 → 了解如何加入专栏作者 了解 JavaScript 的内存泄露和解决方式! 在这篇文章中我们将要探索客户端 JavaScript 代码中常见的一些内存泄漏的情况,并且学习如何使用 Chrome 的开发工具来发现他们.读

Windows系统内存分析工具的介绍

? Windows系统内存分析工具的介绍(进程管理器,资源管理器,性能监视器, VMMap, RamMap,PoolMon) 微软官方提供多种工具来分析Windows 的内存使用情况,除了系统自带的任务管理器(Task Manager), 资源监视器(Resource Manager), 性能监视器(Performance Monitor), 还有SysInternals工具, ?RamMap, PoolMon用以分析内存问题.本文简单介绍上述工具的快速使用方法,如果需要了解深入了解,请参考微软