首頁 > 軟體

Java的jmap命令的具體使用

2022-03-20 13:02:17

jmap命令簡介

jmap(Java Virtual Machine Memory Map)是JDK提供的一個可以生成Java虛擬機器器的堆轉儲快照dump檔案的命令列工具。除此以外,jmap命令還可以檢視finalize執行佇列、Java堆和方法區的詳細資訊,比如空間使用率、當前使用的什麼垃圾回收器、分代情況等等。

和jinfo命令一樣,在Windows系統上使用還是有一些限制的。在沒有dbgeng.dll的Windows系統中,必須安裝用於Windows的偵錯工具才能使jinfo命令正常工作,PATH環境變數應該包含jvm.dll的位置。

jmap命令引數

命令語法:

jmap [options] pid

命令引數說明:

option:jmap命令的可選引數。如果沒有指定這個引數,jinfo命令會顯示Java虛擬機器器程序的記憶體映像資訊,如下圖:

pid:要列印設定資訊的Java虛擬機器器的程序ID。

想要要獲取執行的Java虛擬機器器程序的列表,可以使用ps命令(Linux系統中)或tasklist命令(Windows系統中),如果Java虛擬機器器程序沒有在單獨的docker範例中執行,可以使用jps命令。

option都有哪些引數呢?我們來看一下。

-heap

顯示Java堆的如下資訊:

  • 被指定的垃圾回收演演算法的資訊,包括垃圾回收演演算法的名稱和垃圾回收演演算法的詳細資訊。
  • 堆的設定資訊,可能是由命令列選項指定,或者由Java虛擬機器器根據伺服器設定選擇的。
  • 堆的記憶體空間使用資訊,包括分代情況,每個代的總容量、已使用記憶體、可使用記憶體。如果某一代被繼續細分(例如,年輕代),則包含細分的空間的記憶體使用資訊。

比如:

-histo[:live]

顯示Java堆中物件的統計資訊,包括:物件數量、佔用記憶體大小(單位:位元組)和類的完全限定名。比如:

要獲得某個物件的大小,可以將其總大小除以該物件型別的數量。如果指定了live引數,則只計算活動的物件。比如:

-clstats

顯示Java堆中元空間的類載入器的統計資訊,包括:

class_loader:當Java虛擬機器器執行時,類載入器物件的地址
classes:已載入類的數量
bytes:該類載入器載入的所有類的後設資料所佔的位元組數
parent_loader:父類別載入器物件的地址,如果沒有顯示null
alive:是否存活的標識,表示類載入器物件是否將被垃圾回收。
type:該類載入器的類名。

比如:

-finalizerinfo

顯示在F-Queue中等待Finalizer執行緒執行finalize方法的物件。比如:

-dump:[live,]format=b,file=

生成Java虛擬機器器的堆轉儲快照dump檔案。具體說明如下:

  • live引數是可選的,如果指定,則只轉儲堆中的活動物件;如果沒有指定,則轉儲堆中的所有物件。
  • format=b表示以hprof二進位制格式轉儲Java堆的記憶體。
  • file=<filename>用於指定快照dump檔案的檔名。

比如:

-F

強制模式。如果指定的pid沒有響應,可以配合-dump-histo一起使用。此模式下,不支援live引數。比如:

-h 和 -help

顯示jinfo命令的幫助資訊。

到此這篇關於Java的jmap命令的具體使用的文章就介紹到這了,更多相關Java jmap命令內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com