1、介紹

 

--------------------------------------------------------------------------------

 

列印出某個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),使用參見:
HTTP://blog.csdn.net/fenglibing/archive/2011/04/02/6298326.aspx)
或與jhat (JAVA Heap Analysis Tool)一起使用,能夠以圖像的形式直觀的展示當前內存是否有問題。

 

64位機上使用需要使用如下方式:
jmap -J-d64 -heap pid

 

2、命令格式

 

--------------------------------------------------------------------------------

 

命令列輸入【jmap】幫助提示如下:



C:\>jmap

 

Usage:

 

jmap [option] <pid>

 

(to connect to running process)

 

jmap [option] <executable <core>

 

(to connect to a core file)

 

jmap [option] [server_id@]<remote server IP or hostname>

 

(to connect to remote debug server)





where <option> is one of:

 

<none> to print same info as Solaris pmap

 

-heap to print java heap summary

 

-histo[:live] to print histogram of java object heap; if the "live"

 

suboption is specified, only count live objects

 

-permstat to print permanent generation statistics

 

-finalizerinfo to print information on objects awaiting finalization

 

-dump:<dump-options> to dump java heap in hprof binary format

 

dump-options:

 

live dump only live objects; if not specified

 

,

 

all objects in the heap are dumped.

 

format=b binary format

 

file=<file> dump heap to <file>

 

Example: jmap -dump:live,format=b,file=heap.bin <pid>

 

-F force. Use with -dump:<dump-options> <pid> or -histo

 

to force a heap dump or histogram when <pid> does not

 

respond. The "live" suboption is not supported

 

in this mode.

 

-h | -help to print this help message

 

-J<flag> to pass <flag> directly to the runtime system
簡單說明:
SYNOPSIS

 

jmap [ option ] pid

 

jmap [ option ] executable core

 

jmap [ option ] [server-id@]remote-hostname-or-IP

 

3、參數說明

 

--------------------------------------------------------------------------------

 

1)options:

 

executable JAVA executable from which the core dump was produced.

 

(可能是產生core dump的java可執行程式)

 

core 將被列印資訊的core dump檔

 

remote-hostname-or-IP 遠程debug服務的主機名或ip

 

server-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,可以用jps查問.

 

4、使用示例

 

--------------------------------------------------------------------------------

 

1)[fenglb@ccbu-156-5 ~]$ jmap -histo 4939

 

2)[fenglb@ccbu-156-5 ~]$ jmap -dump:format=b,file=test.bin 4939

 

Dumping heap to /home/fenglb/test.bin ...

 

Heap dump file created

 

From:HTTP://www.blogjava.net/dragonHadoop/archive/2012/11/16/391432.html#Feedback
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()