现在的位置: 首页 > 综合 > 正文

使用Memory Analyzer tool(MAT)分析内存泄漏

2014年11月09日 ⁄ 综合 ⁄ 共 1082字 ⁄ 字号 评论关闭

jmat是java自带的一个内存分析工具,我们可以使用命令将内存分析文件导出,然后使用分析查看类工具进行分析。但我们这里主要讲解使用eclipse插件的方式,对该文件进行分析。

一、首先下载一个基于eclipse的MAT插件。

下载地址:http://www.eclipse.org/mat/downloads.php

你可以选择复制Update Site地址,到Eclipse的Help-Install New Software进行自动安装。

或者也可以把完整安装包下载到本地,然后将解压包里features和plugins文件夹中后缀名为.jar的文件相对应拷贝到Eclipse安装目录下的features和plugins文件夹里。

这样就算已经安装完eclipse的mat分析插件了。

二、导出并打开内存分析文件。

1.运行应用时,打开DDMS视图,在Devices中选中想要分析的应用。点击Update Heap,再点击Dump HPROF file。这时(可能要稍等十几秒钟,系统要点时间生成.hprof文件),会弹出一个窗口,让你选择.hprof文件的保存路径(比如我将选择"E:\mem")。可以任意选择。这个文件就是我们要拿来分析的文件。

2.接着点击Eclipse的Window-Open Perspective-Memory Analysis,并打开该视图。如果已经有该视图,直接打开。这时,注意左上角应该会有一个Open Heap Dump的图标,点击后按照默认的选择,按下finish即可打开上一步保存的那个.hprof文件。

注意:有可能会出现打不开的情况,会报Error opening heap dump ....这样的错误。这是因为文件的版本和编辑器能支持的版本有冲突的原因。android自带的一个hprof-conv工具可以解决这个问题。在确定sdk配置环境正确的情况下,运行-CMD,打开系统控制台,进入到刚才保存.hprof文件的路径,输入hprof-conv
文件名 要转换的文件名,回车即可完成转换。
比如我的进入到E:\mem>hprof-conv input.hprof output.hprof。重新点击图标打开新生成的output.hprof文件即可。

3.也可以设置让eclipse每次点击生成文件之后,自动打开分析文件。

打开后的分析文件,如图所示:


这个图显示了内存占用的比例,浅色块是空闲的内存,其它的是可以的内存占用,颜色越深占用比例越大。

点击每个Problem Suspect下的Details,还可以展开如下图:


可以看到有哪些类的实例占用了内存和占用大小等信息。

抱歉!评论已关闭.