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使用JMAP定位代码内存泄漏
java监控工具源码-可集成到项目使用 内存状态、CPU负载、磁盘IO吞吐率、磁盘健康状态、网卡IO 监控 适合用于服务健康监控、线上调优、排查问题、性能测试等场景 支持操作系统监控:内存状态、CPU负载、磁盘IO及吞吐...
IBM出的一款堆内存对象分析ha(heap analyser)工具,可以用来分析websphere生成的内存转储phd格式文件。 使用方法 1.下载ha457.jar 2.java -Xmx4g -jar ha456.jar 3.打开heapdump.phd 4.他就会显示下面的图片,出现...
jmap 内存分析可视化工具,无须破解,解压即用。小编亲测。
用于分析Java内存溢出,或者内存泄露,需要配合jmap dump出内存文件
heap dump:记录某一时刻JVM堆中对象使用情况,哪些对象占用了太多的堆栈空间,来发现导致内存泄露或者可能引起内存泄露的对象。 thread dump:记录java应用中各线程在某一时刻的运行的位置,即执行到哪一个类的哪一...
jmap:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。 jconsole:一个javaGUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx
MAT 是一个开源的java内存分析工具,能够快速的分析dump文件,可以直观的看到各个对象在内存占用的量大小,以及类实例的数量,对象之间的引用关系,找出对象的GC Roots相关的信息,此外还能生成内存泄露报表,疑似...
Kubernetes应用java程序无法使用jmap,jstack的解决方案.docx
与内存相关的性能问题和故障时Java应用程序经常要面对的,jmap命令提供了直观的方式帮助分析诊断此类问题。
第23节Java内存区域-Java虚拟机栈00:12:04分钟 | 第24节Java内存区域-程序计数器00:12:54分钟 | 第25节Java内存区域-本地方法栈00:02:39分钟 | 第26节Java内存区域-堆内存00:05:08分钟 | 第27节Java内存区域-...
NULL 博文链接:https://kennylee26.iteye.com/blog/1402260
jmap-perl 是 JMAP 代理服务器的 Perl 实现,Perl JMAP 后端可以与 IMAP 和 SMTP 服务器通许,允许在邮件系统上替换 JMAP 接口。为了高效,初始化实现要求所有服务器支持 CONDSTORE 扩展(RFC4551/FRC7162)。提供一个...
使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象。 二 使用MAT意义 当服务器应用占用了...
JMAP-JS 是 JMAP 邮件,联系人和日历模型的 JavaScript 实现,是 JMAP 的 JavaScript 客户端。 标签:JMAPJS
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,下面这篇文章主要给大家介绍了关于jvm信息jmap使用的基本方法教程,需要的朋友...
用java内存监控工具生成的JVM内存日志,用jmap生成的
Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat
2.基于jmap进行FE堆内存分析jmap用于查看堆内对象的统计信息,也可用于生成Java进程的dump文件,dump文件保存了可以输出的所有内存对象。 2.1通过jmap-histo:live统计当前JVM堆内对象信息执行"jmap-histo:live pid...