首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

用Eclipse Memory Analyzer查寻内存泄露

2013-03-10 
用Eclipse Memory Analyzer查找内存泄露? ? ?系统上线后,程序报出out of memory错误。一方面先加大程序运行

用Eclipse Memory Analyzer查找内存泄露

? ? ?系统上线后,程序报出out of memory错误。一方面先加大程序运行的内存以解燃眉之急,另一方面希望能有个工具能查出内存泄露的原因。

?

? ? 通过查阅资料发现了Memory Analyzer这个eclipse插件,下面讲下怎么用。

?

? ? 首先,获取Heap dump文件。?

有三种方式:

? ? 1、设置JVM参数,-XX:+HeapDumpOnOutOfMemoryError,在内存溢出的时候就会生成Heap dump文件

? ? 2、使用jmap。(windows可以通过任务管理器查看pid)

Java5:jmap -heap:format=b <pid>;

Java6:jmap -dump:format=b,file=HeapDump.bin <pid>

? ? 3、在本机运行java程序的时候,直接通过Memory Analyzer生成Heap dump文件。

?用Eclipse Memory Analyzer查寻内存泄露

?

? ? 其次,安装Memory Analyzer。

现在已经出1.2.1了,下载地址http://www.eclipse.org/mat/downloads.php

也可以通过eclipse install new software ,地址http://download.eclipse.org/mat/1.2/update-site/

?

? ? 安好后就可以开始看问题啦!

进入后,主页面如下图所示:

?
用Eclipse Memory Analyzer查寻内存泄露
?

?

从上图可以看到它的大部分功能。
???? 1. Histogram可以列出内存中的对象,对象的个数以及大小。
???? 2. Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。
???? 3.Top consumers通过图形列出最大的object。
???? 4.Leak Suspects通过MA自动分析泄漏的原因。

这次重点是看Leak?Suspects,点开后就能看到

?
用Eclipse Memory Analyzer查寻内存泄露
?

?

点 Detial就能看到实际的一些情况,因为我的错误比较2,所以到这步就能看到原因,fix it!

?
用Eclipse Memory Analyzer查寻内存泄露
?

?

?

另外想要用这个工具了解更多程序运行的情况,发现隐藏问题,可以看

http://eclipsesource.com/blogs/2013/01/21/10-tips-for-using-the-eclipse-memory-analyzer/

还有一个中文的博客,写的也很详细

http://tivan.iteye.com/blog/1487855

?

热点排行