`

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
分享到:
评论

相关推荐

    JVM堆内存分析工具,OOM排查工具。包括ha和mat两种

    在实际开发中,理解并熟练运用这些工具对于提升JVM性能,避免OOM错误,优化应用程序的内存使用至关重要。同时,定期进行内存分析也是维护系统稳定性和高效运行的重要一环。通过持续监控和优化,可以确保JVM在处理...

    OOM分析工具-MemoryAnalyzer.zip

    《Java OOM问题分析利器:Memory Analyzer Tool (MAT)》 ...在实际工作中,结合MAT与JVM的其他监控工具,如VisualVM、JConsole等,将形成一套完整的Java性能调优体系,为我们的开发工作保驾护航。

    java 内存溢出分析工具 HeapAnalyzer

    本文将详细介绍HeapAnalyzer的使用、功能以及如何通过它来排查和解决Java OOM问题。 一、HeapAnalyzer简介 HeapAnalyzer是一款Java内存分析工具,由IBM开发,它可以帮助开发者检查和分析Java堆内存的状态,找出可能...

    内存不足OOM java.lang.OutOfMemoryError.

    总的来说,理解Java内存模型和垃圾收集机制,监控应用的内存使用,以及根据实际情况调整JVM参数,是避免和解决“内存不足OOM”问题的关键。开发者需要对代码进行审查,确保有效利用内存,及时释放不再需要的资源,以...

    java-error-in-idea64主要是javaJVM的dump导出学习使用

    1. **JDK Mission Control (JMC)**:这是一个强大的JVM监控和分析工具,它可以打开并分析heap dump文件,提供内存泄漏探测器、线程分析等功能。通过JMC,你可以找到内存消耗最大的对象类别,追踪对象的生存路径,...

    Android 图片下载以及内存处理防止OOM内存溢出 源码

    - 监控内存使用:使用Android Profiler工具,实时监控应用内存占用,及时发现潜在问题。 - 对象池技术:对于频繁创建和销毁的对象,如Bitmap,可以考虑使用对象池来复用,减少内存分配次数。 - 及时释放资源:在...

    OOM小例子,用于验证oom出现以及对应的问题排查

    4. **直接内存溢出**:Java应用可以使用直接内存,当这部分内存使用过多而无法释放时,也会引发OOM。 二、复现OOM 1. **堆内存溢出**:可以通过创建大量大对象或持有大量短生命周期但无法被回收的对象来复现。 2. ...

    probe3.0.1(支持7,8,9) tomcat监控工具中文版

    2. **Jvm内存监控**:通过监控Java虚拟机(JVM)的内存使用情况,probe可以帮助用户了解内存分配和回收状况,及时发现内存溢出(OOM)风险,并优化内存配置。 3. **CPU性能监控**:它能显示服务器的CPU使用率,帮助...

    android之Gif处理(解决GIF显示容易OOM问题,包括代码和说明),非常详细的介绍

    2. 监控内存:通过Android Profiler或LeakCanary等工具监控内存使用情况,及时发现和修复潜在的内存泄漏。 3. 响应式布局:在不同屏幕尺寸和分辨率的设备上,应适配GIF的大小,防止因过大导致的OOM。 4. 异步加载:...

    MemoryAnalyzer独立版

    三、MAT工具使用步骤 1. 生成内存转储快照:当Java应用出现OOM异常时,可以通过JVM参数设置或者JConsole、VisualVM等工具生成hprof文件。 2. 打开MAT:导入生成的hprof文件到MAT中,工具会自动分析内存数据。 3. ...

    基于Java的内存泄露分析及定位

    要定位内存泄漏,开发者可以使用`-verbose:gc`参数监控垃圾收集,或者借助内存分析工具如JVisualVM。通过观察完全垃圾回收后的内存使用情况,如果内存持续上升,可能存在内存泄漏。 JVisualVM是Java开发者的有力...

    android 图片下载 防止OOM

    在Android开发中,图片加载是常见的操作,但如果不妥善处理,可能会导致内存溢出(Out Of Memory,简称OOM)问题,尤其是当应用需要加载大量...合理利用现有的图片库和性能监控工具,可以大大提高应用的性能和稳定性。

    java使用JMAP定位代码内存泄漏在哪

    本文将详细介绍如何使用JMAP工具来定位Java代码中的内存泄漏问题。 首先,理解内存泄漏的概念:内存泄漏是指程序在申请内存后,无法释放已申请的内存空间,一次小的内存泄漏可能并不明显,但随着时间的推移,这些未...

    [OOM] 记一次线上OOM的问题 - ado19861

    5. **日志监控**:加强日志监控,对异常情况快速响应,及时获取到OOM等关键信息。 通过以上步骤,我们可以逐步排查并解决Java应用中的OOM问题,提高系统的稳定性和性能。记住,理解并掌握内存管理和优化技巧是每个...

    Android内存OOM优化详解.pdf

    对于内存分析,可以使用Android Studio内置的Memory Profiler工具,监控内存分配、查看对象生命周期,并定位内存泄漏。此外,`adb shell dumpsys meminfo`命令可以帮助分析App的内存使用情况。 总之,Android内存...

    java解决大批量数据导出Excel产生内存溢出的方案

    - 使用内存分析工具(如VisualVM或YourKit Java Profiler)监控内存使用情况,找出内存泄漏或不必要的对象引用,进行优化。 通过这些方法,我们可以在处理大量数据导出到Excel时避免内存溢出问题,同时保持程序的...

    java解决nested exception is java.lang.OutOfMemoryError Java heap space

    这时需要使用内存分析工具,如VisualVM或MAT(Memory Analyzer Tool),来分析堆转储文件,找出哪些对象占用过多内存并查找泄漏源头。 3. **优化对象使用**:避免创建大量大对象,尤其是长时间存活的对象,因为它们...

    线上问题排查工具和手段

    例如,在案例一中,通过监控工具发现系统压测6个小时后出现了OOM(内存溢出)异常。在案例二中,观察到服务器load过高,有宕机的趋势。通过日志分析、监控数据和使用各种系统工具,可以找到问题的根本原因,从而采取...

    Java多线程优化百万级数据

    10. **监控与调优**:使用Java的JMX(Java Management Extensions)或者第三方工具如VisualVM,监控线程状态和资源消耗,根据实际情况进行调优。 在"quick-insert"这个文件中,可能包含的是快速插入数据的示例代码...

Global site tag (gtag.js) - Google Analytics