原作者: stone2083 原文地址:http://www.blogjava.net/stone2083/archive/2008/02/25/182081.html
jstatd 啓動jvm監控服務。它是一個基於rmi的應用,向遠程機器提供本機jvm應用程序的信息。默認端口1099。 實例:jstatd -J-Djava.security.policy=my.policy my.policy文件需要自己建立,內如如下: grant codebase "file:$JAVA_HOME/lib/tools.jar" { permission java.security.AllPermission; }; 這是安全策略文件,因爲jdk對jvm做了jaas的安全檢測,所以我們必須設置一些策略,使得jstatd被允許作網絡操作 jps 列出所有的jvm實例 實例: jps 列出本機所有的jvm實例 jps 192.168.0.77 列出遠程服務器192.168.0.77機器所有的jvm實例,採用rmi協議,默認連接端口爲1099 (前提是遠程服務器提供jstatd服務) 輸出內容如下: jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps 6286 Jps 6174 Jstat jconsole 一個圖形化界面,可以觀察到java進程的gc,class,內存等信息。雖然比較直觀,但是個人還是比較傾向於使用jstat命令(在最後一部分會對jstat作詳細的介紹)。 jinfo(linux下特有) 觀察運行中的java程序的運行環境參數:參數包括Java System屬性和JVM命令行參數 實例:jinfo 2083 其中2083就是java進程id號,可以用jps得到這個id號。 輸出內容太多了,不在這裏一一列舉,大家可以自己嘗試這個命令。 jstack(linux下特有) 可以觀察到jvm中當前所有線程的運行情況和線程當前狀態 jstack 2083 輸出內容如下: jmap(linux下特有,也是很常用的一個命令) 觀察運行中的jvm物理內存的佔用情況。 參數如下: -heap:打印jvm heap的情況 -histo:打印jvm heap的直方圖。其輸出信息包括類名,對象數量,對象佔用大小。 -histo:live :同上,但是隻答應存活對象的情況 -permstat:打印permanent generation heap情況 命令使用: jmap -heap 2083 可以觀察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的內存使用情況 輸出內容: jmap -histo 2083 | jmap -histo:live 2083 可以觀察heap中所有對象的情況(heap中所有生存的對象的情況)。包括對象數量和所佔空間大小。 輸出內容: 寫個腳本,可以很快把佔用heap最大的對象找出來,對付內存泄漏特別有效。 jstat 最後要重點介紹下這個命令。 這是jdk命令中比較重要,也是相當實用的一個命令,可以觀察到classloader,compiler,gc相關信息 具體參數如下: -class:統計class loader行爲信息 -compile:統計編譯行爲信息 -gc:統計jdk gc時heap信息 -gccapacity:統計不同的generations(不知道怎麼翻譯好,包括新生區,老年區,permanent區)相應的heap容量情況 -gccause:統計gc的情況,(同-gcutil)和引起gc的事件 -gcnew:統計gc時,新生代的情況 -gcnewcapacity:統計gc時,新生代heap容量 -gcold:統計gc時,老年區的情況 -gcoldcapacity:統計gc時,老年區heap容量 -gcpermcapacity:統計gc時,permanent區heap容量 -gcutil:統計gc時,heap情況 -printcompilation:不知道幹什麼的,一直沒用過。 一般比較常用的幾個參數是: jstat -class 2083 1000 10 (每隔1秒監控一次,一共做10次) 輸出內容含義如下:
jstat -gc 2083 2000 20(每隔2秒監控一次,共做10) 輸出內容含義如下:
輸出內容: 如果能熟練運用這些命令,尤其是在linux下,那麼完全可以代替jprofile等監控工具了,誰讓它收費呢。呵呵。 用命令的好處就是速度快,並且輔助於其他命令,比如grep gawk sed等,可以組裝多種符合自己需求的工具。 |
(轉)JVM監控工具介紹
2008年03月04日 16:57
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.