jdk自帶的jvm監測程序

jinfo:可以輸出並修改運行時的java 進程的opts。
jps:與unix上的ps類似,用來顯示本地的java進程,可以查看本地運行着幾個java程序,並顯示他們的進程號。
jstat:一個極強的監視VM內存工具。可以用來監視VM內存內的各種堆和非堆的大小及其內存使用量。
jmap:打印出某個java進程(使用pid)內存內的所有'對象'的情況(如:產生那些對象,及其數量)。
jconsole:一個java GUI監視工具,可以以圖表化的形式顯示各種數據。並可通過遠程連接監視遠程的服務器VM。
Java VisualVM JVM(遠程)監控程序


詳細:在使用這些工具前,先用JPS命令獲取當前的每個JVM進程號,然後選擇要查看的JVM。
jstat工具特別強大,有衆多的可選項,詳細查看堆內各個部分的使用量,以及加載類的數量。使用時,需加上查看進程的進程id,和所選參數。以下詳細介紹各個參數的意義。
jstat -class pid:顯示加載class的數量,及所佔空間等信息。
jstat -compiler pid:顯示VM實時編譯的數量等信息。
jstat -gc pid:可以顯示gc的信息,查看gc的次數,及時間。其中最後五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。
jstat -gccapacity:可以顯示,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 -util pid:統計gc信息統計。
jstat -printcompilation pid:當前VM執行的信息。
除了以上一個參數外,還可以同時加上 兩個數字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,還可以加上-h3每三行顯示一下標題。

jmap是一個可以輸出所有內存中對象的工具,甚至可以將VM 中的heap,以二進制輸出成文本。
命令:jmap -dump:format=b,file=heap.bin <pid>
file:保存路徑及文件名
pid:進程編號
•jmap -histo:live  pid| less :堆中活動的對象以及大小
•jmap -heap pid : 查看堆的使用狀況信息


jinfo:的用處比較簡單,就是能輸出並修改運行時的java進程的運行參數。用法是jinfo -opt pid 如:查看2788的MaxPerm大小可以用 jinfo -flag MaxPermSize 2788。

jconsole是一個用java寫的GUI程序,用來監控VM,並可監控遠程的VM,非常易用,而且功能非常強。使用方法:命令行裏打 jconsole,選則進程就可以了。
JConsole中關於內存分區的說明。

Eden Space (heap): 內存最初從這個線程池分配給大部分對象。
Survivor Space (heap):用於保存在eden space內存池中經過垃圾回收後沒有被回收的對象。
Tenured Generation (heap):用於保持已經在 survivor space內存池中存在了一段時間的對象。
Permanent Generation (non-heap): 保存虛擬機自己的靜態(refective)數據,例如類(class)和方法(method)對象。Java虛擬機共享這些類數據。這個區域被分割爲只讀的和只寫的,
Code Cache (non-heap):HotSpot Java虛擬機包括一個用於編譯和保存本地代碼(native code)的內存,叫做“代碼緩存區”(code cache)

•jstack ( 查看jvm線程運行狀態,是否有死鎖現象等等信息) : jstack pid : thread dump
•jstat -gcutil  pid  1000 100  : 1000ms統計一次gc情況統計100次;

另外推薦一款查看jmap dump 的內存對象工具 MemoryAnalyzer
網址:http://www.eclipse.org/mat/,可以查看dump時對象數量,內存佔用,線程情況等。

 

對於使用命令行遠程監控jvm 太麻煩 jdk1.6 Oracle 提供了一個新的可視化的。 JVM 監控工具 Java VisualVM jvisualvm.exe JDK bin 目錄下。

雙擊啓動 Java VisualVM 後可以看到窗口左側應用程序欄中有“ 本地 ”、“遠程 、“快照三個項目。

本地下顯示的是在 localhost 運行的 Java 程序的資源佔用情況,如果本地有 Java 程序在運行的話啓動 Java VisualVM 即可看到相應的程序名,點擊程序名打開相應的資源監控菜單,以圖形的形式列出程序所佔用的 CPU Heap PermGen 、類、線程的 統計信息。

遠程” 項下列出的遠程主機上的 Java 程序的資源佔用情況,但需要在遠程主機上運行 jstatd 守護程序

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章