Java OOM监控工具使用

在编写Java代码时,经常会遇到OOM内存溢出,遇到这种情况时,一般会使用开源OOM分析工具,来分析内存溢出时的dump文件,下面主要介绍几种监控工具的使用。
一、IBM HeapAnalayzer

工具的下载
该工具是一个独立的jar包,我们只需运行jar包,然后就会弹出该工具的使用界面。
访问网址 https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091,然后点击链接“Download HeapAnalyzer”,就能下载到最新的IBM HeapAnalayzer。

工具的运行
在运行该工具时,会有个比较恶心的问题,就是该工具在解析dump文件时,会遇到内存不足的问题。因此需要加载该jar包在运行时使用的内存:
首先,打开CMD命令
然后输入如下命令:

java -Xms512m -Xmx1024m -jar IBMHeapAnalayzer监控工具全名


工具的使用
为了测试工具,首先需要产生一个dump文件:
在Eclipse中创建一个Test类,然后写入如下代码:

package test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author zhengtian
 * 
 * @date 2011-6-17 下午02:39:24
 */
@SuppressWarnings("all")
public class test {
	public static void main(String[] args) {
		List<Date> list = new ArrayList<Date>();
		while (true) {
			Date date = new Date();
			list.add(date);
			date = null;
		}
	}
}

然后,在Test类的运行命令中的Vm arguments输入框内,输入如下内容:

-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=C:\Users\Administrator\Desktop\javaHeapDump.hprof

编辑完成后,如下图所示:


然后,运行Test类,在桌面产生javaHeapDump.hprof文件。接着在双击IBMHeapAnalayzer监控工具,我这里的监控工具名称是ha437.jar,打开后,如下图所示:

请注意下图显示的部分:

红色标注的地方显示,内存被占用99.19%,咱用内存的是一个ArrayList,且里面存放的是很多的Date对象。

当然该工具也提供了一个直接查看对象占用内存大小的功能,如图:

图中直接显示了Date对象占用了很多的内存,该功能使用非常方便。

二、Memory Analyzer (MAT)
这个工具的详细用法,在IBM Developer Works论坛上有一篇很好的文章
http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html
http://coderj.org/blog/2011/08/02/use-mat-analysis-dump-file/
工具的下载
该工具是Eclipse插件,也是用来解析dump文件。MAT主站地址为: http://www.eclipse.org/mat/。首先输入网址http://www.eclipse.org/mat/previousReleases.php,然后查看你自己的Eclipse版本,我的是Indigo的,所以点击链接“Previous Releases”,选择Indigo版本的URL[url]http://download.eclipse.org/mat/1.1.0/update-site/ [/url]。

工具的运行
根据上一个工具中产生dump文件的方法,产生一个文件,然后直接将该文件拖入到Eclipse中即可。打开后,如下图所示:


工具的使用
打开MAT工具的首页后,点击 ,会显示内存对象中所占的内存大小,如图:
  • 大小: 127.1 KB
  • 大小: 197.3 KB
  • 大小: 81.4 KB
  • 大小: 142 KB
  • 大小: 102.3 KB
  • 大小: 926 Bytes
  • 大小: 163.6 KB
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值