jdk分析工具:jmap和jhat
2015-01-22 09:48
387 查看
jmap
打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=outfile 3024可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具(Memory Analysis Tool)或与jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的展示当前内存是否有问题。64位机上使用需要使用如下方式:jmap -J-d64 -heap pid命令格式
jmap [ option ] pidjmap [ option ] executable corejmap [ option ] [server-id@]remote-hostname-or-IP参数说明
1)、options:executable Java executable from which the core dump was produced.(可能是产生core dump的java可执行程序)core 将被打印信息的core dump文件remote-hostname-or-IP 远程debug服务的主机名或ipserver-id 唯一id,假如一台主机上多个远程debug服务2)、基本参数:-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.-finalizerinfo 打印正等候回收的对象的信息.-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.-h | -help 打印辅助信息-J 传递参数给jmap启动的jvm.pid 需要被打印配相信息的java进程id使用示例
查询jvm堆的概要信息blue@blue-pc:~/apache-tomcat-7.0.39/conf$ jps -ml 2491 9142 org.apache.catalina.startup.Bootstrap start 9168 sun.tools.jps.Jps -ml 2967 root@blue-pc:/home/blue/apache-tomcat-7.0.39/conf# jmap -heap 9142 Attaching to process ID 9142, please wait... Debugger attached successfully. Server compiler detected. JVM version is 20.10-b01 using thread-local object allocation. Parallel GC with 4 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 1031798784 (984.0MB) NewSize = 1048576 (1.0MB) MaxNewSize = 4294901760 (4095.9375MB) OldSize = 4194304 (4.0MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 16777216 (16.0MB) MaxPermSize = 67108864 (64.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 16121856 (15.375MB) used = 15074368 (14.37603759765625MB) free = 1047488 (0.99896240234375MB) 93.50268356199187% used From Space: capacity = 2686976 (2.5625MB) used = 2684584 (2.5602188110351562MB) free = 2392 (0.00228118896484375MB) 99.91097799161585% used To Space: capacity = 2686976 (2.5625MB) used = 0 (0.0MB) free = 2686976 (2.5625MB) 0.0% used PS Old Generation capacity = 42991616 (41.0MB) used = 5071824 (4.8368682861328125MB) free = 37919792 (36.16313171386719MB) 11.797239722275153% used PS Perm Generation capacity = 16777216 (16.0MB) used = 11304456 (10.780769348144531MB) free = 5472760 (5.219230651855469MB) 67.37980842590332% useddump jvm内存信息
root@blue-pc:/home/blue/apache-tomcat-7.0.39/conf# jmap -F -dump:format=b,file=tomcat.bin 9142 Attaching to process ID 9142, please wait... Debugger attached successfully. Server compiler detected. JVM version is 20.10-b01 Dumping heap to tomcat.bin ... Finding object size using Printezis bits and skipping over... Heap dump file created
jhat
用途:是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言生成tomcat.bin dump文件后,使用jhat查看root@blue-pc:/home/blue/apache-tomcat-7.0.39/conf# jhat tomcat.bin ..... Started HTTP server on port 7000 Server is ready.访问 http://localhost:7000,就可以查看详细的内存信息 有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:
jhat -J-Xmx512m <heap dump file>
本文转载自:http://www.cnblogs.com/ggjucheng/archive/2013/04/16/3024986.html
相关文章推荐
- jdk工具之jmap(java memory map)、 mat之四--结合mat对内存泄露的分析、jhat之二--结合jmap生成的dump结果在浏览器上展示
- jdk分析工具:jmap和jhat
- JVM分析工具链(二) - jmap和jhat
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- JDK 内置工具 jstack,javah,jps,jstat,jmap,jinfo,jconsole,jhat,jdb,jvisualvm 的作用和使用
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 - 实例分析
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- JVM自带性能分析工具介绍——jmap和jhat
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- VM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 - 实例分析
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- 转 JDK自带VM分析工具jps,jstat,jmap,jconsole
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- Java 工具(jmap,jstack)在linux上的源码分析(五) -F 参数的bug
- Java 工具(jmap,jstack)在linux上的源码分析(四)safe point
- java内存溢出分析工具:jmap使用实战
- Ubuntu11.10下解决 jmap等jdk工具attach pid错误