jmap用於檢視堆記憶體使用情況,一般結合jhat使用。
jmap -permstat pid
列印程序的類載入器和類載入器載入的持久代物件資訊,輸出:類載入器名稱、物件是否存活(不可靠)、物件位址、父類載入器、已載入的類大小等資訊,
使用jmap -heap pid檢視程序堆記憶體使用情況,包括使用的gc演算法、堆配置引數和各代中堆記憶體使用情況。
使用jmap -histo[:live] pid檢視堆記憶體中的物件數目、大小統計直方圖,如果帶上live則只統計活物件,如下:
還有乙個很常用的情況是:用jmap把程序記憶體使用情況dump到檔案中,再用jhat分析檢視。jmap進行dump命令格式如下:
jmap -dump:format=b,file=dumpfilename
如果擔心瞬間掛掉,則使用如下引數:
▪-xx:+
heapdumponoutofmemoryerror
我一樣地對上面程序id為21711進行dump:
root@ubuntu:/# jmap -dump:format=b,file=/tmp/dump.dat 21711
dumping heap to /tmp/dump.dat ...
heap dump file created
dump出來的檔案可以用mat、visualvm等工具檢視,這裡用jhat檢視:
jvm工具jmap命令筆記
指定64位機使用 jmap j d64 heap pid輸出jvm的heap內容到檔案加live是只輸出存活物件 jmap dump live,format b,file pid 1949.txt 1949檢視準備 的物件資訊 jmap finalizerinfo 1949檢視堆記憶體配置資訊 jm...
jmap命令問題解決與記憶體洩漏
jmap jmap 命令檢視記憶體中物件的數量,統計記憶體洩漏。命令為 jps jmap histo live 程序號 1.txt 記憶體中物件的數量統計寫入1.txt檔案中 使用jmap histo live pid檢視堆記憶體中的物件數目 大小統計直方圖,如果帶上live則只統計活物件 在泛型的...
通過jmap分析記憶體洩漏
首先應該明確的是,jmap命令只能為記憶體洩漏提供一些線索和依據,但是不能確切的排查出 中哪一行真正的出現了問題。舉個例子 乙個池子有1000l的容量,前面的800l紅色的水一直沒有問題,這時向其中倒入了201l藍色的水,池子裡面的水溢位了,我能確切的說是這800l紅色的水的問題導致的嗎?我能確切的...