在介紹JDK有哪些工具時,第二大列應該是『故障排查、分析、監控和管理工具』,但我想先從監控工具jps、jstat這些比較基本的工具開始介紹,會比較好理解。
jps全名:Java Virtual Machine Process Status Tool ,透過該指令查看系統內所有HotSpot虛擬機正在運行的進程。
p.s:透過該指令查到的PID與在Linux/Mac作業系統中下top
指令查到的PID相同,代表進程的ID是唯一的。
jps [option] [hostid]
一樣可以透過在終端機下jps -help
查看有哪些option可以使用。
注意!! 若直接下jps
則會出現系統內所有HotSpot虛擬機正在運行的進程資訊,而非跟-help出現一樣的內容喔!!
指定特定主機,可以是ip地址和域名,也可指定具體協議,端口。
-q
:僅顯示LVMID(Local Virtual Machine id),即PID,不顯示主類的名稱。
-m
:列出傳遞給main方法的參數。-l
:列出應用程序主類完整的類名或jar包完整的路徑。-v
:列出虛擬機進程啟動時的JVM參數。-V
:輸出通過.hotsportrc或-XX:Flags-< filename >指定的JVM參數)(這參數我目前還有點不明白,這就不介紹了)
jps
看看目前有哪些進程正在運行中若沒有任何正在運行的Java程序或者相關的ide沒有開著,那麼應該只會有一個,也就是jps。
p.s 每下一次jps,它的PID就會改變喔!代表每次jps
指令都是一個新的進程。
package Controller;
public class JpsTest{
public static void main(String[] args) throws InterruptedException{
System.out.println("Start"+Arrays.toString(args));
Thread.sleep(60000);
System.out.println("The End");
}
}
我寫了一段程式碼,將引數值輸出,接著讓目前的執行緒暫停執行一段時間,單位為毫秒(millisecond)
編譯且執行,執行時我增加了一些參數
java -Xmx20m Controller/JpsTest Program arguments
編譯與執行的指令說明,請參考Day4-java語言編譯器:javac & 運行工具:java (上)
註:-Xmx20m
:這是要給予的VM arguments(系統屬性),Xmx 代表的意思是最大堆大小 ,mx是memory max的簡稱。Program arguments
:編譯時給予的args引數
-q
jps -q
⚠-q
這參數是只顯示PID資訊,故-q與其他參數放在一起也不會有任何效果
-m
jps -m
-l
jps -l
運行時,如何指定class路徑,jps
會顯示一樣的結果
java Controller.JpsTest
-v
jps -v
補充:
多個參數可一起放置,將想顯示的資訊放在一起
jps -v -m