iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
自我挑戰組

展開JDK工具的30天應用之旅系列 第 8

Day8-JDK性能監控工具:jstat(上)

jstat介紹

jstat全名:Java Virtual Machine Statistics Monitoring Tool,用於檢視HotSpot虛擬機相關性能的統計訊息。可以顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據。

在沒有GUI的狀況下,這將會是查看虛擬機性能問題的首選工具!!

指令介紹

jstat -<option> [-t] [-h<lines>] <vmid> [<interval>[<count>]]

可以先下jstatjstat --help查看一些資訊
參數位置盡量照著上面放置喔!
https://ithelp.ithome.com.tw/upload/images/20210922/20140481kAWqr9U8G4.png

jstat的option有很多,所以我會先選一個固定的option(-class)進行其他參數的說明。


以下為示範內容

Step1.準備一個JstatTest.java檔案,程式碼如下:

package Controller;

public class JstatTest{

  public static void main(String[] args) throws InterruptedException{
    System.out.println("Start");
    Thread.sleep(1000000);
    System.out.println("The End");
  }
}

我寫了一段程式碼,輸出"Start",接著讓執行緒暫停一段時間,最後輸出"The End"

Step.2 將程式碼進行編譯並且執行

編譯與執行的指令說明,請參考Day4-java語言編譯器:javac & 運行工具:java (上)

Step3.要進行查看jstat前,須先知道要查看哪個HotSpot進程

故得先透過jps查看,請參考Day7-JDK查看正在運行的Java進程工具:jps
https://ithelp.ithome.com.tw/upload/images/20210923/20140481DXpFR6YKQu.png

我查到我這次的進程是1198,以下示範的指令記得將1198改為欲查看的進程id喔!

  • 不帶其他參數

不帶其他參數,只帶-class時顯示得資訊如下

jstat -class 1198

https://ithelp.ithome.com.tw/upload/images/20210923/20140481JPdJppxAav.png

  • -t

於第一欄顯示時間戳記,是從JVM啟動後開始計算的時間。

jstat -class -t 1198

https://ithelp.ithome.com.tw/upload/images/20210923/20140481McZTjVPu49.png

  • -h<lines>

每隔幾行顯示一次標題,此參數必須搭配interval一起才看得出效果。
可以不用搭配count,只不過我個人習慣的關係,所以範例照片的指令有加上20次

jstat -class -h5 1198 1000

https://ithelp.ithome.com.tw/upload/images/20210923/20140481ENHM96qJgC.png

  • interval

每隔多久顯示一次紀錄。

  1. interval單位為毫秒。我輸入1000,相當於每隔1秒顯示一筆紀錄直到HotSpot終止的那一刻,所以最後我用control+c退出
  2. 可以不用帶上-t參數,範例照片的指令純粹是個人習慣
jstat -class 1198 1000

https://ithelp.ithome.com.tw/upload/images/20210923/20140481jsinmhuSYj.png

  • count

要顯示幾次紀錄。
可以不用帶上-t參數,範例照片的指令純粹是個人習慣

jstat -class 1198 1000 20

https://ithelp.ithome.com.tw/upload/images/20210923/201404819vu1Lv5IFs.png
由於interval count參數都直接是數字,故若只帶一個數字,命令會辨認為interval

心得

這些還只是較簡單的應用,下篇會說明有哪些option可以使用,內容會稍微複雜一點。


上一篇
Day7-JDK查看正在運行的Java進程工具:jps
下一篇
Day9-JDK性能監控工具:jstat(下)
系列文
展開JDK工具的30天應用之旅30

尚未有邦友留言

立即登入留言