|
1、命令基本概述 Jmap是一個可以輸出所有內(nèi)存中對象的工具,甚至可以將VM 中的heap,以二進制輸出成文本。打印出某個java進程(使用pid)內(nèi)存內(nèi)的,所有‘對象’的情況(如:產(chǎn)生那些對象,及其數(shù)量)。 使用方法 jmap -histo pid。如果使用SHELL ,可采用jmap -histo pid>a.log日志將其保存到文件中,在一段時間后,使用文本對比工具,可以對比出GC回收了哪些對象。jmap -dump:format=b,file=outfile 3024可以將3024進程的內(nèi)存heap輸出出來到outfile文件里,再配合MAT(內(nèi)存分析工具)。 64位機上使用需要使用如下方式: jmap -J-d64 -heap pid 2、命令格式 l jmap [ option ] pid l jmap [ option ] executable core l jmap [ option ] [server-id@]remote-hostname-or-IP 1)、options: l executable :產(chǎn)生core dump的java可執(zhí)行程序; l core 將被打印信息的core dump文件; l remote-hostname-or-IP 遠程debug服務(wù)的主機名或ip; l server-id 唯一id,假如一臺主機上多個遠程debug服務(wù); 2)、基本參數(shù): ? -dump:[live,]format=b,file=<filename> 使用hprof二進制形式,輸出jvm的heap內(nèi)容到文件=. live子選項是可選的,假如指定live選項,那么只輸出活的對象到文件. $jmap–dump:live,format=b,file=aaa.bin 3772 ? -finalizerinfo 打印正等候回收的對象的信息 $jmap -finalizerinfo 3772
? -heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情況. $jmap –heap 3772
? -histo[:live] 打印每個class的實例數(shù)目,內(nèi)存占用,類全名信息. VM的內(nèi)部類名字開頭會加上前綴”*”. 如果live子參數(shù)加上后,只統(tǒng)計活的對象數(shù)量. $jmap–histo:live 3772
? -permstat 打印classload和jvm heap長久層的信息. 包含每個classloader的名字,活潑性,地址,父classloader和加載的class數(shù)量. 另外,內(nèi)部String的數(shù)量和占用內(nèi)存數(shù)也會打印出來. $jmap -permstat 3772
? -F 強迫.在pid沒有相應(yīng)的時候使用-dump或者-histo參數(shù). 在這個模式下,live子參數(shù)無效. ? -h | -help 打印輔助信息 ? -J 傳遞參數(shù)給jmap啟動的jvm. 參考文獻: http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html |
|
|
來自: liang1234_ > 《jvm》