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
可以使用,內容會稍微複雜一點。