SUN JDK監控和故障處理工具

 

名稱

主要做用

jps

jvm process status tool,顯示指定系統內全部的hotspot虛擬機進程html

jstat    jvm statistics monitoring tool,用於收集hotspot虛擬機各方面的運行數據
jinfo  configuration info for java,顯示虛擬機配置信息
jmap   memory map for java,生成虛擬機的內存轉儲快照(heapdump文件)
jhat 

jvm heap dump browser,用於分析heapmap文件,它會創建一個http/html服務器java

讓用戶能夠在瀏覽器上查看分析結果linux

jstack   stack trace for java ,顯示虛擬機的線程快照

 

 

 

 

 

 

 

 

 

1、jps:虛擬機進程情況工具

  能夠列出正在運行的虛擬機進程,並顯示虛擬機執行主類名稱以及這些進程的本地虛擬機惟一ID。c++

  jsp命令格式 jsp [options] [hostid]windows

  jps能夠經過RMI協議開啓了RMI服務的遠程虛擬機進程狀態,hostid爲RMI註冊表中註冊的主機名。瀏覽器

  jps經常使用的選項服務器

屬性 做用
-p 只輸出LVMID,省略主類的名稱
-m 輸出虛擬機進程啓動時傳遞給主類main()函數的參數
-l 輸出主類的全名,若是進程執行的是jar包,輸出jar路徑
-v 輸出虛擬機進程啓動時jvm參數

2、jstat:虛擬機統計信息監視工具

  jstat是用於監視虛擬機各類運行狀態信息的命令行工具。它能夠顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾回收、JIT編譯等運行數據,在沒有GUI圖形界面,只是提供了純文本控制檯環境的服務器上,它將是運行期定位虛擬機性能問題的首選工具jvm

  jstat的命令格式  jstat [option vmid [interval [s|ms] [count]] ]jsp

  對於銘霖格式中的VMID和LVMID,如過是本地虛擬機進程,VMID和LVMID是一致的,若是是遠程虛擬機,那VMID的格式應當是:函數

  [protocol:] [//] lvmid[@hostname[:port]/servername]

  參數interval 和count分別表示查詢的間隔和次數,若是省略這兩個參數,說明只查詢一次。

  主要選項

選項 做用

-class

監視裝載類、卸載類、總空間以及類裝載所耗費的時間

-gc

監視java堆情況,包括eden區、兩個survivor區、老年代、永久代等的容量、已用空間、GC時間合計信息

-gccapacity

監視內容與-gc基本相同,但輸出主要關注java堆各個區域使用到最大、最小空間

-gcutil

監視內容與-gc基本相同,但輸出主要關注已使用控件佔總空間的百分比

-gccause

與-gcutil功能同樣,可是會額外輸出致使上一次gc產生的緣由

-gcnew

監視新生代GC狀況

-gcnewcapacity

監視內容與-gcnew基本相同,輸出主要關注使用到的最大、最小空間

-gcold

監視老年代GC狀況

-gcoldcapacity

監視內容與-gcold基本相同,輸出主要關注使用到的最大、最小空間
-gcpermcapacity 輸出永久代使用到的最大、最小空間

-compiler

輸出JIT編譯過的方法、耗時等信息

-printcompilation

輸出已經被JIT編譯過的方法

   

3、jinfo:java配置信息工具

  jinfo的做用是實時的查看和調整虛擬機各項參數。使用jps命令的-v參數能夠查看虛擬機啓動時顯示指定的參數列表,但若是想知道未被顯式指定的參數的系統默認值,除了去找資料之外,就得使用jinfo的-flag選項

  jinfo格式 jinfo [option] pid

  jinfo在windows 平臺仍有很大的限制

4、jmap:java內存映像工具

  jmap命令用於生成堆轉儲快照。jmap的做用並不單單爲了獲取dump文件,它還能夠查詢finalize執行隊列、java堆和永久代的詳細信息。如空間使用率、當前用的是哪一種收集器等。

  和jinfo命令同樣,jmap在windows下也受到比較大的限制。除了生成dump文件的-dump選項和用於查看每一個類的實例、控件佔用統計的-histo選項在全部操做系用都提供以外,其他選項只能在linux/solaris下使用。

  jmap格式 jmap [option] vmid

  選項:

選項 做用
-dump 生成java堆轉儲快照。格式爲: -dump:[live,]format=b,file=<filename>,其中live子參數說明是否只dump出存活的對象
-finalizerinfo 顯示在F-Queue中等待Finalizer線程執行finalize方法的對象。只在Linux/Solaris平臺下有效
-heap 顯示java堆詳細信息,如使用哪一種收集器、參數配置、分代狀況等,在Linux/Solaris平臺下有效
-jisto 顯示堆中對象統計信息,包含類、實例對象、合集容量
-permstat 以ClassLoader爲統計口徑顯示永久代內存狀態。只在Linux/Solaris平臺下有效
-F 當虛擬機進程對-dump選項沒有相應時。可以使用這個選項強制生成dump快照。只在Linux/Solaris平臺下有效

5、jhat:虛擬機堆轉儲快照分析工具

  Sun JDK提供jhat與jmap搭配使用,來分析dump生成的堆快照。jhat內置了一個微型的HTTP/HTML服務器,生成dump文件的分析結果後,能夠在瀏覽器中查看。

  用法舉例 jhat test1.bin  

  test1.bin爲生成的dump文件。

  分析結果默認是以包圍單位進行分組顯示,分析內存泄漏問題主要會使用到其中的「Heap Histogram」與OQL標籤的功能。前者能夠找到內存中總容量最大的對象。後者是標準的對象查詢語言,使用相似SQL的語法對內存中的對象進行查詢統計。

6、jstack:java堆棧跟蹤工具

   jstack命令用於生成虛擬機當前時刻的線程快照。線程快照就是當前虛擬機內每一條線程正在執行的方法堆棧集合,生成線程快照的主要目的是定位線程出現長時間停頓的緣由,如線程死鎖、死循環、請求外部資源致使長時間等待等。

  jstack 格式 jstack [option] vmid

  option選項的合法值和具體含義

選項 做用
-F 當正常輸出的請求不被響應時,強制輸出線程堆棧
-l 除堆棧外,顯示關於鎖的附加信息
-m 若是調用到本地方法的話,能夠顯示c/c++的堆棧

Tread類新增了一個getAllStackTraces()方法用於獲取虛擬機中全部的線程的StackTraceElement對象。

 

 

本隨筆只是對書中內容的筆記摘抄,其實有不少可視化的方便的工具可使用,例如JConsole就完成了大部分的功能,這裏只作備忘,不深究。

相關文章
相關標籤/搜索