天天看點

jdk分析工具:jps和jstackjpsjstack

用來檢視基于HotSpot JVM裡面所有程序的具體狀态, 包括程序ID,程序啟動的路徑等等。與unix上的ps類似,用來顯示本地有權限的java程序,可以檢視本地運作着幾個java程式,并顯示他們的程序号。使用jps時,不需要傳遞程序号做為參數。

Jps也可以顯示遠端系統上的JAVA程序,這需要遠端服務上開啟了jstat服務,以及RMI注及服務,不過常用都是對本對的JAVA程序的檢視。

jps [ options ] [ hostid ]

-m 輸出傳遞給main方法的參數,如果是内嵌的JVM則輸出為null。

-l 輸出應用程式主類的完整包名,或者是應用程式JAR檔案的完整路徑。

-v 輸出傳給JVM的參數。

jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack

前面的數字是jvm的程序id,後面是jvm的類啟動資訊。

如果java程式崩潰生成core檔案,jstack工具可以用來獲得core檔案的java stack和native stack的資訊,進而可以輕松地知道java程式是如何崩潰和在程式何處發生問題。另外,jstack工具還可以附屬到正在運作的java程式中,看到當時運作的java程式的java stack和native stack的資訊, 如果現在運作的java程式呈現hung的狀态,jstack是非常有用的。

$jstack [ option ] pid

$jstack [ option ] executable core

$jstack [ option ] [server-id@]remote-hostname-or-IP

OPTIONS

-F jstack [-l] pid無法響應時,強制列印堆棧

-l l長清單. 列印關于鎖的附加資訊,例如屬于java.util.concurrent的ownable synchronizers清單.

-m 混合模式輸出(包括java和本地c/c++片段)堆棧。

pid: java應用程式的程序号,一般可以通過jps來獲得;

executable:産生core dump的java可執行程式;

core:列印出的core檔案;

remote-hostname-or-ip:遠端debug伺服器的名稱或IP;

server-id: 唯一id,假如一台主機上多個遠端debug服務;

jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack
jdk分析工具:jps和jstackjpsjstack

一般情況下,通過jstack輸出的線程資訊主要包括:jvm自身線程、使用者線程等。其中jvm線程會在jvm啟動時就會存在。對于使用者線程則是在使用者通路時才會生成。

本文轉自快樂就好部落格園部落格,原文連結:http://www.cnblogs.com/happyday56/p/6006868.html,如需轉載請自行聯系原作者