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

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

目錄

1、jps:虛擬機進程情況工具 2、jstat:虛擬機統計信息監視工具 3、jmap:Java內存映像工具 4、jhat:虛擬機堆轉儲快照分析工具 5、jstack:Java堆棧跟蹤工具 6、jinfo:Java配置信息工具linux

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一致。shell

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

option
樣例:

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次 操作系統

3.jmap (Memory Map for Java)

用於生成堆轉儲快照(heapdump或dump文件),說白了就是把java堆使用狀況快照一份導出來供咱們查看,用來排查問題。

使用格式 :jmap [option] vmid

option
樣例

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

樣例:

查看分析結果

5.jstack (Stack Trace for Java)

用於生成虛擬機當前時刻線程快照(threaddump或javacore)。主要用來定位線程出現長時間停頓的緣由,判斷死鎖啊,死循環的等。經過jstack就可知各線程的調用堆棧狀況。

使用格式:jstack [option] vmid

option

樣例:

6.jinfo (Configuration Info for Java)

用來查看和調整虛擬機各項參數

使用格式:jinfo [option] pid

能夠經過-flag[+|-] name 添加和刪除一些參數,或者-flag name =value修改一些參數,可是不少參數是不容許修改的

option
樣例:

結語

本文主要是簡單介紹常見的幾個JDK命令行工具,建議使用的時候本身經過命令 -option 查看每一個選項實際的意思再使用,畢竟這麼選項通常也記不住。並且這些工具備一些算比較簡陋了例如jhat ,這玩意分析的簡陋,界面也簡陋不夠強大和專業。因此這些個命令行工具以瞭解和大概明白其做用爲主。

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

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


若有錯誤歡迎指正!

我的公衆號:yes的練級攻略

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

相關文章
相關標籤/搜索