天天看點

jvm工具(三)jmap

文法

jmap [ option ] pid

jmap [ option ] executable core

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

參數

option 參數是單一的,緊跟在指令後面。

pid 要被映射的程序。必須是java程序。用jps可以獲得java程序清單

executable 産生核心轉儲的可執行java代碼

core 要被映射的核心檔案

remote-hostname-or-IP 遠端調試伺服器的域名或者ip位址(看jsadebugd)

server-id 可選唯一id,如果多個伺服器運作在同一個遠端主機

描述

    是複制共享對象的記憶體映射、給定程序的堆記憶體、核心檔案、遠端調試伺服器。如果給定的程序是再64的VM,你需要制定參數,例如:

    jmap -J-d64 -heap pid

    注意:這個工具在未來的JDK裡可能不支援或者不出現。在windows系統裡沒有dbgeng.dll, 需要安裝'Debugging Tools for Windows'來運作這些工具。同時PATH環境變量必須包含被目标程序或者崩潰導出檔案位置鎖使用的jvm.dll路徑。例如:

    set PATH=\jre\bin\client;%PATH%

OPTIONS

<no option> 當沒有選項,jmap複制共享對象映射。目标虛拟機中的每一個分享對象、開始位址、映射大小、完整路徑被複制。這類似于Solaris中的pmap工具。

-dump:[live,]format=b,file=<filename> 把java堆導出成hprof二進制格式檔案。live子選項是可選的。如果指定,隻有堆中的活對象被導出。浏覽堆鏡像,你可以使用jhat。

-finalizerinfo 複制正在等待回收的對象資訊

-heap 複制一個堆得概要。使用的GC算法堆配置,使用代的大小。

-histo[:live] 複制一個堆得柱狀圖。每個Java類,對象個數,記憶體大小(byte),類全路徑。VM的内部類用*為字首。如果live子選項被指定,隻有活對象被計數。

-permstat 列印堆中永生代的類加載器的寬泛統計。每個加載器的名字,活性,位址,父加載器,它加載的類的大小。另外,駐留字元串的大小和數量。

-F 強制。使用jmap -dump 或者 jmap -histo 選項時,如果pid沒有響應。在這個模式下live子選項不支援。

-h 幫助

-help 幫助

-J<flag> java虛拟機選項