面試官:你用過哪些JDK自帶的命令列工具

yes的練級攻略發表於2019-05-03

本文基於HotSpot虛擬機器,JDK版本1.8.0_171,windows系統

目錄

一、jps:虛擬機器程式狀況工具 二、jstat:虛擬機器統計資訊監視工具 三、jmap:Java記憶體映像工具 四、jhat:虛擬機器堆轉儲快照分析工具 五、jstack:Java堆疊跟蹤工具 六、jinfo:Java配置資訊工具

java和javac這兩個命令列工具我們應該都很熟悉,但是除了這兩個工具jdk/bin裡面還提供了很多工具給我們使用,今天就簡單介紹有關虛擬機器監控且助於故障排查的工具。

jdk/bin中部分工具截圖
實際上這些工具大多數就是jdk/lib/tool.jar的封裝,內部就是呼叫tool裡面的內容,所以工具體積都不大,而且在linux版本的jdk中有些工具就是用shell寫的。

1.jps(JVM Process Status Tool)

用於顯示指定系統內所有HotSpot虛擬機器程式,並且能顯示虛擬機器執行主類以及本地虛擬機器唯一ID(LVMID,Local Virtual Machine Identifier)功能單一,但是其他因為其他工具都需要指明LVMID(來確定要監控的虛擬機器程式,所以都需要用到它。對於本地的虛擬機器程式來說LVMID和作業系統的程式ID一致。

使用格式:jps [options] [hostid]

option
樣例:
面試官:你用過哪些JDK自帶的命令列工具

jps可以通過RMI協議查詢遠端開啟RMI服務的虛擬機器程式,hostid為RMI登錄檔中註冊的主機名。

2.jstat(JVM Statistics Monitoring Tool)

用於監視虛擬機器各種執行狀態資訊的工具,可以顯示本地或者遠端的虛擬機器程式類裝載、記憶體、GC、JIT等執行資料,在沒有GUI影像介面的伺服器上,主要就是用它在執行期定位效能問題。

使用格式 :jstat [option vmid [interval [s|ms] [count]] ]

option

interval表示查詢的間隔, s|ms是秒和毫秒(預設是毫秒,即不寫單位是毫秒),count表示查詢的次數。

樣例:表示每5秒鐘檢視一次LVMID為34216的虛擬機器程式的GC情況,一共查詢10次

面試官:你用過哪些JDK自帶的命令列工具

3.jmap (Memory Map for Java)

用於生成堆轉儲快照(heapdump或dump檔案),說白了就是把java堆使用情況快照一份匯出來供我們檢視,用來排查問題。

使用格式 :jmap [option] vmid

option
樣例
面試官:你用過哪些JDK自帶的命令列工具

4.jhat (JVM Heap Analysis Tool)

這個就是和jmap搭配使用的,jmap匯出來的堆快照檔案用jhat 開啟分析

使用格式: jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>

option

樣例:

面試官:你用過哪些JDK自帶的命令列工具
檢視分析結果
面試官:你用過哪些JDK自帶的命令列工具

5.jstack (Stack Trace for Java)

用於生成虛擬機器當前時刻執行緒快照(threaddump或javacore)。主要用來定位執行緒出現長時間停頓的原因,判斷死鎖啊,死迴圈的等。通過jstack就可知各執行緒的呼叫堆疊情況。

使用格式:jstack [option] vmid

option

樣例:

面試官:你用過哪些JDK自帶的命令列工具

6.jinfo (Configuration Info for Java)

用來檢視和調整虛擬機器各項引數

使用格式:jinfo [option] pid

可以通過-flag[+|-] name 新增和刪除一些引數,或者-flag name =value修改一些引數,但是很多引數是不允許修改的

option
樣例:
面試官:你用過哪些JDK自帶的命令列工具

結語

本文主要是簡單介紹常見的幾個JDK命令列工具,建議使用的時候自己通過命令 -option 檢視每個選項實際的意思再使用,畢竟這麼選項一般也記不住。而且這些工具有一些算比較簡陋了例如jhat ,這玩意分析的簡陋,介面也簡陋不夠強大和專業。所以這些個命令列工具以瞭解和大概明白其作用為主。

像平日裡一般用於分析都用JConsole、VisualVM(All-in-One Java Troubleshooting Tool)這種視覺化工具來分析故障監控效能等,有些在IDE裡面的也有用MAT等工具分析。

本文參考《深入理解JAVA虛擬機器》第四章


如有錯誤歡迎指正!

個人公眾號:yes的練級攻略

有相關面試進階(分散式、效能調優、經典書籍pdf)資料等待領取

相關文章