Java線程狀態
線程的五種狀態
* 新建:new(時間很短)
* 運行:runnable
* 等待:waitting(無限期等待),timed waitting(限期等待)
* 阻塞:blocked
* 結束:terminated(時間很短)
Jvm監控工具
一、jstack
介紹:
jstack用於打印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息。
如果是在64位機器上,需要指定選項"-J-d64",Windows的jstack使用方式只支持以下的這種方式:jstack [-l] pid
如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發生問題。
另外,jstack工具還可以附屬到正在運行的java程序中,看到當時運行的java程序的java stack和native stack的信息, 如果現在運行的java程序呈現hung的狀態,jstack是非常有用的。
使用:
1、查看運行程序的進程號
2、jstack dump當前線程狀態
3、根據當前抓取到的信息進行進一步的分析
二、jvisualvm
jdk自帶有個jvisualvm工具、該工具是用來監控java運行程序的cpu、內存、線程等的使用情況。並且使用圖表的方式監控java程序、還具有遠程監控能力。
前期准備
1、上傳tomcat到虛擬機,webapps下存在Prefteach包
2、監控之前先對jvm加監控參數,在tomcat的bin目錄下,catalina.sh文件中,搜索JAVA_OPTS=,在if里面,添加:
-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.1.101
以上添加的內容,需要修改兩處
1-改port
2-改hostname為本機ip
3、啟動tomcat並打開輸出日志:./startup.sh ../logs/catalina.out
jvisualvm使用
1、windows鍵+R鍵 輸入jvisualvm回車
2、右鍵遠程添加遠程主機
3、在 主機ip 上右鍵添加jmv連接
4、輸入遠程連接的端口號點擊確定
5、雙擊192.168.1.101:10086,打開如下圖所示的界面
6、進入jvisualvm時時查看程序運行狀態
注釋:在測試環境中有可能沒有權限在服務器上添加需要遠程連接的配置,這樣只能使用jstack