您當前的位置:首頁 > 體育

JDK工具使用總結

作者:由 伊森沃德 發表于 體育時間:2022-03-21

jps:虛擬機器程序狀況工具(命令列工具)

jps(JVM Process Status Tool),它的功能也和ps命令類似:可以列出正在執行的虛擬機器程序,並顯示虛擬機器執行主類(Main Class,main()函式所在的類)名稱以及這些程序的本地虛擬機器唯一ID(Local Virtual Machine Identifier,LVMID)。

jps命令格式:

jps [options] [hostid]

jps可以透過RMI協議查詢開啟了RMI服務的遠端虛擬機器程序狀態,hostid為RMI登錄檔中註冊的主機名。jps的其他常用選項如下:

JDK工具使用總結

jps工具主要選項

雖然功能比較單一,但它是使用頻率最高的JDK命令列工具,因為其他的JDK工具大多需要輸入它查詢到的LVMID來確定要監控的是哪一個虛擬機器程序。對於本地虛擬機器程序來說,LVMID與作業系統的程序ID(Process Identifier,PID)是一致的。

jstat:虛擬機器統計資訊監視工具(命令列工具)

jstat(JVM Statistics Monitoring Tool)用於監視虛擬機器各種執行狀態資訊。可以顯示本地或者遠端[1]虛擬機器程序中的類裝載、記憶體、垃圾收集、JIT編譯等執行資料。

在沒有GUI圖形介面,只提供了純文字控制檯環境的伺服器上,它將是

執行期

定位虛擬機器效能問題的首選工具

jstat命令格式:

jstat [option vmid [interval [s|ms][count]]]

選項option代表著使用者希望查詢的虛擬機器資訊,

主要分為3類:類裝載、垃圾收集、執行期編譯狀況

,具體選項及作用如下:

JDK工具使用總結

jstat工具主要選項

jinfo:Java配置資訊工具(命令列工具)

jinfo(Configuration Info for Java)的作用是實時地檢視和調整虛擬機器各項引數。使用jps命令的-v引數可以檢視虛擬機器啟動時顯式指定的引數列表,但如果想知道未被顯式指定的引數的系統預設值,除了去找資料外,就只能使用jinfo的-flag選項進行查詢了。

jinfo命令格式:

jinfo [option] pid

jmap:Java記憶體映像工具(命令列工具)

jmap(Memory Map for Java)命令用於生成堆轉儲快照(一般稱為heapdump或dump檔案)。jmap的作用並不僅僅是為了獲取dump檔案,它還可以查詢finalize執行佇列、Java堆和永久代的詳細資訊,如空間使用率、當前用的是哪種收集器等。

jmap命令格式

jmap [option] vmid

option選項的合法值與具體含義如下:

JDK工具使用總結

jmap 工具主要選項

jhat:虛擬機器堆轉儲快照分析工具(命令列工具)

jhat(JVM Heap Analysis Tool)命令與jmap搭配使用,來分析jmap生成的堆轉儲快照。jhat內建了一個微型的HTTP/HTML伺服器,生成dump檔案的分析結果後,可以在瀏覽器中檢視。

在實際工作中,除非筆者手上真的沒有別的工具可用,否則一般都不會去直接使用jhat命令來分析dump檔案,主要原因有二:一是一般不會在部署應用程式的伺服器上直接分析dump檔案,即使可以這樣做,也會盡量將dump檔案複製到其他機器上進行分析,因為分析工作是一個耗時而且消耗硬體資源的過程,既然都要在其他機器進行,就沒有必要受到命令列工具的限制了;另一個原因是jhat的分析功能相對來說比較簡陋,後文將會介紹到的VisualVM,以及專業用於分析dump檔案的Eclipse Memory Analyzer、IBM HeapAnalyzer等工具,都能實現比jhat更強大更專業的分析功能。

jstack:Java堆疊跟蹤工具(命令列工具)

jstack(Stack Trace for Java)命令用於生成虛擬機器當前時刻的執行緒快照(一般稱為threaddump或者javacore檔案)。執行緒快照就是當前虛擬機器內每一條執行緒正在執行的方法堆疊的集合,生成執行緒快照的主要目的是定位執行緒出現長時間停頓的原因,如執行緒間死鎖、死迴圈、請求外部資源導致的長時間等待等都是導致執行緒長時間停頓的常見原因。執行緒出現停頓的時候透過jstack來檢視各個執行緒的呼叫堆疊,就可以知道沒有響應的執行緒到底在後臺做些什麼事情,或者等待著什麼資源。

jstack命令格式:

jstack [option] vmid

option選項的合法值與具體含義如下:

JDK工具使用總結

jstack工具主要選項

JConsole:Java監視與管理控制檯(視覺化工具)

JConsole(Java Monitoring and Management Console)是一種基於JMX的視覺化監視、管理工具。它管理部分的功能是針對JMX MBean進行管理,由於MBean可以使用程式碼、中介軟體伺服器的管理控制檯或者所有符合JMX規範的軟體進行訪問,所以本節將會著重介紹JConsole監視部分的功能。

JConsole主介面,可以看到主介面裡共包括“概述”、“記憶體”、“執行緒”、“類”、“VM摘要”、“MBean”6個頁籤;

JDK工具使用總結

JConsole主介面

VisualVM:多合一故障處理工具(視覺化工具)

VisualVM(All-in-One Java Troubleshooting Tool)是到目前為止隨JDK釋出的功能最強大的執行監視和故障處理程式,除了執行監視、故障處理外,還提供了很多其他方面的功能,如效能分析(Profiling);

VisualVM可以做到:

(1)顯示虛擬機器程序以及程序的配置、環境資訊(jps、jinfo)。

(2)監視應用程式的CPU、GC、堆、方法區以及執行緒的資訊(jstat、jstack)。

(3)dump以及分析堆轉儲快照(jmap、jhat)。

(4)方法級的程式執行效能分析,找出被呼叫最多、執行時間最長的方法。

(5)離執行緒序快照:收集程式的執行時配置、執行緒dump、記憶體dump等資訊建立一個快照,可以將快照發送開發者處進行Bug反饋。

(6)其他plugins的無限的可能性……

標簽: 虛擬機器  執行緒  工具  快照  Java