JVM監控工具使用速查手冊
本文向大家描述一下JVM監控工具的用法,經過簡單試用,這些命令+圖形工具已經足夠強大,能滿足一般的監控要求了,如對各類內存、垃圾回收、線程狀態的監控。
JVM監控工具用法指導手冊
一直沒有做過JVM監控,總以為要找些專門的工具才能做JVM監控,如jprofile之類的工具,但這類工具都是收費的。經過查找,發現其實sun的jdk中就帶有這類工具,從jdk5開始命令行有了jstat,jps,jstatd,圖形監控有了jconsole;而到了jdk6,命令有了jmap,jinfo,jstack,圖形有了jvisualvm。經過簡單試用,這些命令+圖形工具已經足夠強大,能滿足一般的監控要求了,如對各類內存、垃圾回收、線程狀態的監控。
JVM監控工具之jstatd
啟動JVM監控服務。它是一個基于rmi的應用,向遠程機器提供本機JVM應用程序的信息。默認端口1099。
實例:jstatd-J-Djava.security.policy=my.policy
my.policy文件需要自己建立,內容如下:
- grantcodebase"file:$JAVA_HOME/lib/tools.jar"{
- permissionjava.security.AllPermission;
- };
這是安全策略文件,因為jdk對JVM做了jaas的安全檢測,所以我們必須設置一些策略,使得jstatd被允許作網絡操作
JVM監控工具之jps
列出所有的JVM實例
實例:
jps
列出本機所有的JVM實例
jps192.168.0.77
列出遠程服務器192.168.0.77機器所有的JVM實例,采用rmi協議,默認連接端口為1099
(前提是遠程服務器提供jstatd服務)
輸出內容如下:
- jones@jones:~/data/ebook/java/j2se/jdk_gc$jps
- 6286Jps
- 6174Jstat
JVM監控工具之jconsole
一個圖形化界面,可以觀察到java進程的gc,class,內存等信息。雖然比較直觀,但是個人還是比較傾向于使用jstat命令(在最后一部分會對jstat作詳細的介紹)。
JVM監控工具之jinfo(linux下特有)
觀察運行中的java程序的運行環境參數:參數包括JavaSystem屬性和JVM命令行參數
實例:jinfo2083
其中2083就是java進程id號,可以用jps得到這個id號。
輸出內容太多了,不在這里一一列舉,大家可以自己嘗試這個命令。
【編輯推薦】