Jmap是一個能夠輸出全部內存中對象的工具,甚至能夠將VM 中的heap,以二進制輸出成文本。打印出某個java進程(使用pid)內存內的,全部‘對象’的狀況(如:產生那些對象,及其數量)。java
使用方法 jmap -histo pid。若是使用SHELL ,可採用jmap -histo pid>a.log日誌將其保存到文件中,在一段時間後,使用文本對比工具,能夠對比出GC回收了哪些對象。jmap -dump:format=b,file=outfile 3024 能夠將3024進程的內存heap輸出出來到outfile文件裏,再配合MAT(內存分析工具)。shell
64位機上使用須要使用以下方式:apache
jmap -J-d64 -heap pidubuntu
二、命令格式服務器
l jmap [ option ] pidjvm
l jmap [ option ] executable core工具
l jmap [ option ] [server-id@]remote-hostname-or-IPspa
1)、options: debug
l executable :產生core dump的java可執行程序;
l core 將被打印信息的core dump文件;
l remote-hostname-or-IP 遠程debug服務的主機名或ip;
l server-id 惟一id,假如一臺主機上多個遠程debug服務;
2)、基本參數:
Ø -dump:[live,]format=b,file=<filename> 使用hprof二進制形式,輸出jvm的heap內容到文件=. live子選項是可選的,假如指定live選項,那麼只輸出活的對象到文件.
$jmap–dump:live,format=b,file=aaa.bin 3772
---------------------------------------------------------------------------------------------------------------
jps主要用來輸出JVM中運行的進程狀態信息。語法格式以下:
jps [options] [hostid]
若是不指定hostid就默認爲當前主機或服務器。
命令行參數選項說明以下:
-q 不輸出類名、Jar名和傳入main方法的參數 -m 輸出傳入main方法的參數 -l 輸出main類或Jar的全限名 -v 輸出傳入JVM的參數
好比下面:
root@ubuntu:/# jps -m -l
2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5/etc/jetty.xml
29920 com.sun.tools.hat.Main -port 9998 /tmp/dump.dat
3149 org.apache.catalina.startup.Bootstrap start
30972 sun.tools.jps.Jps -m -l 8247 org.apache.catalina.startup.Bootstrap start 25687 com.sun.tools.hat.Main -port 9999 dump.dat 21711 mrf-center.jar