jmap是输出内存中对象的工具,甚至可以将VM 中的heap以二进制输出成文本。可以监控JAVA程序是否有内存泄漏。
两种使用方法:
一、jmap -histo pid在内存使用峰值前后分别dump一次,可以对比出GC回收了哪些对象。
1.sudo su admin -c "/opt/taobao/java_1.6.0.21/bin/jmap -histo pid > jmap.txt"
2.vi jmap.txt 一般查看前几项即可。
二、jmap -dump:format=b,file=f1 PID 将该内存heap输出到f1文件里,配合eclipse插件MemoryAnalyzer来使用。
主要操作步骤:
<一>.JMap安装与应用
1.安装JDK,推荐1.6以上版本
2.JMap在windows上的路径:\Java\jdk1.6.0_07\bin\jmap.exe
<二>.JMap dump内存
以下举例为在linux服务器端获取的应用服务系统在性能测试过程中占用的内存以及进行分析的操作。
1、在java程序运行期间,在内存出现拐点的时候,dump内存,并建立内存数据文件。例如
/opt/ao/java1/bin/jmap -dump:live,file=dump_001.bin PID
该命令执行后,会获取当前应用服务系统的占用内存并且保存在dump_001.bin文件。
如下操作:
[haan@v021062 admin]$ sudo -u admin -H /opt/o/java1/bin/jmap -dump:live,file=/home/admin/dump_001.bin 16885
Dumping heap to /home/admin/dump_001.bin ...
Heap dump file created
*****************************************************************************
2、在内存出现泄露、溢出或者其它前提条件下,建议多dump几次内存,把内存文件进行编号归档,便于后续内存整理分析。
3、当dump下来的转储文件比应用的-Xmx参数小很多的话,一般不需要分析。
在heapdump内存时,命令参数,请参考SUN 公司的JAVA官方文档,访问地址:http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html
<三>.Memory Analyzer分析dump下来的内存
Memory Analyzer (MAT)是一个JAVA内存分析工具,可用来帮助发现内存泄露,以及优化程序,使内存消耗降低。
一、准备工作:
1、请到http://www.eclipse.org/mat/下载MemoryAnalyzer-Incubation新版本。
2、MAT对服务器要求较高,如果转储文件太大(>3G)的话,建议在64的服务器上使用MAT(vnc)
二、Member Leak 分析三部曲:
1、启动MAT,并打开转储文件。File > Open Heap Dump...
2、生成Leak Suspects Report
3、在Leak Suspects Report的Leaks视图中,MAT会给出它怀疑有问题的若干个对象。你需要做的就是
a.确定它认为的问题在你的应用里是不是可以忽略,
b.a步骤后剩下的问题可能就是应用症结所在,
资料参考:
http://www.eclipse.org/mat/
http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html
http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html
分享到:
相关推荐
- 理解Java内存模型(堆、栈、方法区等)对使用内存分析工具至关重要。 总之,HeapAnalyzer是Java开发者处理内存溢出问题的强大助手。通过熟练掌握其使用,我们可以有效地定位并解决内存问题,提升应用的稳定性和...
在Java中,内存泄露通常发生在对象不再被程序使用但仍然保持在内存中,导致可用内存逐渐减少。长期的内存泄露会导致Java虚拟机(JVM)的堆内存耗尽,引发OutOfMemoryError。 检查Java内存泄露的方法主要包括以下几...
Java IBM WebSphere应用服务器在运行过程中可能会遇到各种性能问题,其中最常见的挑战之一是内存溢出。内存溢出是指应用程序消耗的内存超过了系统所能提供的限制,导致程序崩溃或性能急剧下降。在这种情况下,开发者...
IBM内存分析工具,作为一个专业的Java内存诊断工具,专门针对Java内存溢出(Memory Overflow)和内存泄露(Memory Leak)问题进行深度分析,帮助开发者定位并解决这些问题。本文将详细介绍IBM内存分析工具的功能、...
`jconsole`和`jvisualvm`都是图形化的性能监控工具,它们提供了丰富的界面,可以实时监控Java应用的CPU使用、内存分配、线程状态等。`jvisualvm`还支持生成各种报告和分析堆内存转储。 `jhat`是一个命令行工具,...
Java内存泄漏分析是一个关键的系统优化任务,尤其是在大型企业级应用中,长期运行的系统可能会因为内存泄漏导致性能下降甚至服务中断。"JAVA内存泄漏分析工具"正是一款用于解决此类问题的专业工具,它能帮助开发者...
jconsole可以实时地监控Java应用程序的性能和资源使用情况,帮助开发者快速地定位问题所在。 三、jinfo命令 jinfo命令可以从core文件里面知道崩溃的Java应用程序的配置信息,包括Heap size、Perm size等等信息。...
本文将深入探讨Java内存监控的相关知识点,并提供实用的命令工具来帮助你查找和解决常见的服务器内存溢出错误。 首先,我们要理解Java内存模型。Java虚拟机(JVM)内存主要分为以下几部分: 1. **堆内存**:这是...
### Java虚拟机(JVM)监控的关键知识点 #### 1. JVM监控的重要性 Java虚拟机(JVM)监控是一项关键的...通过使用合适的监控工具和技术,可以有效地识别和解决内存溢出、内存泄漏等问题,从而提高系统的可靠性和用户体验。
2. 使用内存分析工具:如VisualVM、MAT(Memory Analyzer Tool)、JProfiler等,它们可以帮助定位内存泄露的具体位置。 在排查内存问题时,可以开启JDK的GC日志输出,通过`-verbose:gc`和`-XX:+PrintGCDetails`参数...
在Java编程环境中,监视内存的使用情况是优化应用程序性能的关键环节。这可以帮助我们发现潜在的内存泄漏、过度分配的问题,以及提高程序运行效率。本文将详细介绍如何在Java中监控内存使用,并提供相关知识点。 ...
为了优化内存使用和链接管理,开发者需要定期进行性能测试和压力测试,分析GC日志,识别可能的性能瓶颈,并根据实际情况调整JVM参数,如设置合适的堆大小、新生代和老年代比例、GC策略等。 总的来说,理解和监控...
在Java开发过程中,特别是在企业级应用中,经常会遇到各种性能瓶颈问题,如内存溢出(`OutOfMemoryError`)、内存泄露、线程死锁、锁争用等问题。这些问题如果不能及时有效地解决,不仅会影响系统的稳定性与响应速度...
总结,jmap和MAT是Java内存诊断的得力助手,它们能帮助开发者深入理解Java应用程序的内存使用情况,从而提高应用性能,避免内存溢出等问题的发生。通过熟练掌握这两个工具的使用,可以有效地提升Java应用的稳定性和...
标题中的“Tomcat内存溢出”指的是在运行Apache Tomcat(一个流行的Java应用服务器)时,由于内存资源分配不当或程序逻辑错误导致的系统内存使用超出其可用范围,从而引发的一种常见问题。这种情况可能导致服务器...
- **堆dump分析**:通过jmap生成堆转储文件,使用MAT、VisualVM等工具分析内存泄漏。 - **线程dump**:jstack命令获取线程状态,排查死锁、阻塞等问题。 - **日志分析**:JVM会生成各种日志,如gc.log,用于分析...
在Java世界中,JVM(Java Virtual Machine)是运行所有Java程序的核心,它负责解析字节码、管理内存以及执行线程。对于大型企业级应用,JVM的性能监控与调优是至关重要的,因为这直接影响到应用的响应速度、稳定性和...
Java虚拟机(JVM)是Java程序运行的核心,它为应用程序提供了一个运行环境,负责管理内存、执行字节码以及...在实际开发中,结合日志、监控数据和这些工具,可以有效地定位和解决问题,提升Java应用程序的整体性能。