天天看點

jmap檢視記憶體使用情況與生成heapdump

jmap

JVM Memory Map指令用于生成heap dump檔案,如果不使用這個指令,還可以使用-XX:+HeapDumpOnOutOfMemoryError參數來讓虛拟機出現OOM的時候自動生成dump檔案。 jmap不僅能生成dump檔案,還可以查詢finalize執行隊列、Java堆和永久代的詳細資訊,如目前使用率、目前使用的是哪種收集器等。

jmap檢視記憶體使用情況與生成heapdump

參數

option:選項參數,不可同時使用多個選項參數

pid:java程序id,指令ps -ef | grep java擷取

executable:産生核心dump的java可執行檔案

core:需要列印配置資訊的核心檔案

remote-hostname-or-ip:遠端調試的主機名或ip

server-id:可選的唯一id,如果相同的遠端主機上運作了多台調試伺服器,用此選項參數辨別伺服器

options參數

heap : 顯示Java堆詳細資訊

histo : 顯示堆中對象的統計資訊

permstat :Java堆記憶體的永久儲存區域的類加載器的統計資訊

finalizerinfo : 顯示在F-Queue隊列等待Finalizer線程執行finalizer方法的對象

dump : 生成堆轉儲快照

F : 當-dump沒有響應時,強制生成dump快照

示例

-dump

dump堆到檔案,format指定輸出格式,live指明是活着的對象,file指定檔案名

jmap檢視記憶體使用情況與生成heapdump

-heap

列印heap的概要資訊,GC使用的算法,heap的配置及使用情況,可以用此來判斷記憶體目前的使用情況以及垃圾回收情況.

jmap檢視記憶體使用情況與生成heapdump

-finalizerinfo   

列印等待回收的對象資訊

jmap檢視記憶體使用情況與生成heapdump

-histo

列印堆的對象統計,包括對象數、記憶體大小等等。jmap -histo:live 這個指令執行,JVM會先觸發gc,然後再統計資訊

jmap檢視記憶體使用情況與生成heapdump

jmap -histo:live 11808 | grep StringBuffer 查詢類名包含StringBuffer的資訊

jmap -histo:live 11808 | grep StringBuffer > histo.txt 儲存資訊到histo.txt檔案