jstat全名:Java Virtual Machine Statistics Monitoring Tool,用於檢視HotSpot虛擬機相關性能的統計訊息。可以顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據。
在沒有GUI的狀況下,這將會是查看虛擬機性能問題的首選工具!!
jstat -<option> [-t] [-h<lines>] <vmid> [<interval>[<count>]]
可以先下jstat或jstat --help查看一些資訊
參數位置盡量照著上面放置喔!
jstat的option有很多,所以我會先選一個固定的option(-class)進行其他參數的說明。
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"
編譯與執行的指令說明,請參考Day4-java語言編譯器:javac & 運行工具:java (上)
故得先透過jps查看,請參考Day7-JDK查看正在運行的Java進程工具:jps
我查到我這次的進程是1198,以下示範的指令記得將1198改為欲查看的進程id喔!
不帶其他參數,只帶-class時顯示得資訊如下
jstat -class 1198

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

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

interval每隔多久顯示一次紀錄。
-t參數,範例照片的指令純粹是個人習慣
jstat -class 1198 1000

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

由於interval count參數都直接是數字,故若只帶一個數字,命令會辨認為interval
這些還只是較簡單的應用,下篇會說明有哪些option可以使用,內容會稍微複雜一點。