1)jps命令java
功能介紹:linux
jps是用來查看JVM裏面全部進程的具體狀態,包括進程ID,進程啓動的路徑等等。與unix上的ps相似,用來顯示本地java進程,能夠查看本地運行着幾個java程序,並顯示他們的進程號。注意是顯示當前用戶有訪問權限的進程。數據庫
2)jconsolejvm
功能介紹:ide
jconsole是基於java Management Extensions(JMX)的實時圖形檢測工具,這個工具利用了內建到JVM裏面的JMX指令來提供實時的性能和資源監控,包括了java程序的內存使用,Heap size,線程的狀態,類的份配狀態和空間使用等等。工具
3)jinfo(僅linux有)性能
功能介紹:命令行
jinfo能夠從core文件裏面知道奔潰的java應用程序的配置信息,目前只有在Solaris和Linux的JDK版本里面纔有。觀察運行中的java程序運行環境參數:參數包括java System屬性和JVM命令行參數線程
範例unix
jinfo 2159
其中25159就是java進程id號,能夠用前面的jps命令獲得這個id號。
4)jstack(僅linux有)
功能介紹:
經過jstack能夠觀察到jvm中當前全部線程的運行狀況和線程當前狀態
若是java程序奔潰生成core文件,jstack工具能夠用來得到core文件的java stack和native stack的信息,從而能夠輕鬆知道java程序是如何奔潰和在程序何處發生問題。另外,jstack工具還能夠附屬到正在運行的java程序中,看到當時運行的java程序的java stack和native stack的信息,若是如今運行的java程序呈現hung狀態,jstack是很是有用的。目前只有在Solaris和linux的jdk版本中才有。
###################################################
最近系統老是每隔一週左右就莫名其妙down掉。因而研究了一下jdk下面幾個經常使用的查看
jvm運行時狀態的參數,很快找出了問題所在。如今把幾個命令記錄一下:
1. jstat
這個命令對於查看Jvm的堆棧信息頗有用。可以查看eden,survivor,old,perm等heap的capacity,utility信息
對於查看系統是否是有能存泄漏以及參數設置是否合理有不錯的意義
2. jstack
這個是用來查看jvm當前的thread dump的。能夠看到當前Jvm裏面的線程情況。
這個對於查找blocked線程比較有意義
3. jmap .
這個是用來查看jvm當前的heap dump的。能夠看出當前jvm中各類對象的數量,所佔空間等等。
尤爲值得一提的是這個命令能夠處處一份binary heap dump的bin文件,這個文件可以直接用
Eclipse Memory Anayliser來分析,並找出潛在的內存泄漏的地方。
4. 還有一個比較有用的非jvm命令--netstat
經過這個命令能夠看到linux系統當前在各個端口的連接狀態,好比查看數據庫鏈接數等等