天天看點

JVM監控工具介紹

JVM監控工具介紹

VisualVM是一種內建了多個JDK指令行工具的可視化工具,它能為您提供強大的分析能力。所有這些都是免費的!它囊括的指令行工具包括jps,jstat,jmap,jinfo,jstack,JConsole,這些工具與JDK的标準版本是一緻的。

jps:與unix上的ps類似,用來顯示本地的java程序,可以檢視本地運作着幾個java程式,并顯示他們的程序号。

jstat:一個極強的監視VM記憶體工具。可以用來監視VM記憶體内的各種堆和非堆的大小及其記憶體使用量。

jmap:列印出某個java程序(使用pid)記憶體内的,所有‘對象’的情況(如:産生那些對象,及其數量)。

jinfo:此JVM監控工具可以輸出并修改運作時的java程序的opts。

jsatck:如果java程式崩潰生成core檔案,jstack工具可以用來獲得core檔案的javastack和nativestack的資訊,進而可以輕松地知道java程式是如何崩潰和在程式何處發生問題。

jconsole:一個javaGUI監視工具,可以以圖表化的形式顯示各種資料。并可通過遠端連接配接監視遠端的伺服器VM。

JVM監控工具的詳細介紹:

1)   jps工具:

與unix系統裡的ps指令類似,作用是顯示目前系統的java程序情況,及其id号。可以通過jps檢視啟動了幾個java程序(因為每個java程式都會獨占一個java虛拟機執行個體),和他們的程序号(為下面幾個程式做準備),并可通過opt來檢視這些程序的詳細啟動參數。

使用方法:在目前指令行下打jps(需要JAVA_HOME,沒有的話,到改程式的目錄下打)

2)   jstat工具:

jstat工具特别強大,有衆多的可選項,詳細檢視堆内各個部分的使用量,以及加載類的數量。使用時,需加上檢視程序的程序id,和所選參數。以下詳細介紹各個參數的意義。

http://blog.csdn.net/zhaozheng7758/article/details/8623549

jstat -class pid:顯示加載class的數量,及所占空間等資訊。

jstat -compiler pid:顯示VM實時編譯的數量等資訊。

jstat –gc pid:可以顯示gc的資訊,檢視gc的次數,及時間。其中最後五項,分别是younggc的次數,younggc的時間,fullgc的次數,fullgc的時間,gc的總時間。

jstat –gc capacity:可以顯示,VM記憶體中三代(young,old,perm)對象的使用和占用大小,如:PGCMN顯示的是最小perm的記憶體使用量,PGCMX顯示的是perm的記憶體最大使用量,PGC是目前新生成的perm記憶體占用量,PC是但前perm記憶體占用量。其他的可以根據這個類推,OC是old内純的占用量。

jstat -gcnew pid:new對象的資訊。

jstat -gcnewcapacity pid:new對象的資訊及其占用量。

jstat -gcold pid:old對象的資訊。

jstat  -gcoldcapacity pid:old對象的資訊及其占用量。

jstat  -gcpermcapacity pid:perm對象的資訊及其占用量。

jstat -gcutil pid:統計gc資訊統計。

jstat –printcompilation pid:目前VM執行的資訊。

除了以上一個參數外,還可以同時加上兩個數字,如:

jstat -printcompilation 3024 250 6是每250毫秒列印一次,一共列印6次,還可以加上-h3每三行顯示一下标題。

3)   jmap工具:

是一個可以輸出所有記憶體中對象的工具,可以将VM中的heap,以二進制輸出成文本。

使用方法jmap-histopid。如果連用SHELLjmap-histopid>a.log可以将其儲存到文本中去,在一段時間後,使用文本對比工具,可以對比出GC回收了哪些對象。jmap-dump:format=b,file=String3024可以将3024程序的記憶體heap輸出出來到String檔案裡。

4)   jinfo工具:

能輸出并修改運作時的java程序的運作參數。使用方法 jmap -histo pid。如果連用 SHELL jmap -histo pid>a.log可以将其儲存到文本中去(windows下也可以使用),在一段時間後,使用文本對比工具,可以對比出GC回收了哪些對象。 jmap -dump:format=b,file=f1 3024可以将3024程序的記憶體heap輸出出來到f1檔案裡

5)   jstack工具:

可以觀察到jvm中目前所有線程的運作情況和線程目前狀态

jstack 2083

6)   jconsole工具:

是一個用java寫的GUI程式,用來監控VM,并可監控遠端的VM,非常易用,而且功能非常強。由于是GUI程式,不會的地方可以參考SUN的官方文檔。

使用方法:指令行裡打jconsole,選則程序就可以了。http://swiftlet.net/archives/658

 使用參考:    http://jiajun.iteye.com/blog/810150  

使用參考:http://blog.csdn.net/arkblue/article/details/6229637

繼續閱讀