JVM基礎故障處理工具總結
JVM基礎故障處理工具
1. jps:虛擬機進程狀況工具
jps 工具的功能是列出正在運行的虛擬機進程,並顯示虛擬機執行主類的名稱以及這些進程的本地虛擬機唯一 ID。
jps 命令格式如下:
$jps [option] [hostid]
2. jstat:虛擬機統計資訊監視工具
jstat 是用於監視虛擬機各種運行狀態的命令行工具,可以顯示虛擬機進程中類載入、記憶體、垃圾收集、即時編譯等運行時數據。
jstat 命令格式如下:
$jstat [ option vmid [interval[s|ms] [count] ] ]
參數interval
和count
代表查詢間隔和次數,如果忽略這兩個參數說明只查詢一次。
選項option
代表用戶希望查詢的虛擬機資訊,主要分為三類:類載入、垃圾收集、運行期編譯狀況。
下面給出一個例子:
查詢結果表明:
- 新生代 Eden 區使用了 6.2% 的空間
- 兩個 Survivor 區都是空的
- 老年代 O 使用了 41.42% 的空間
- 永久代 P 使用了 47.20% 的空間
- 程式運行以來發生 Young GC 16 次,共耗時 0.105s
- 發生 Full GC 3 次,共耗時 0.472s
- 所有 GC 總耗時 0.577s
3. jinfo:Java配置資訊工具
jinfo 的作用是實時查看和調整虛擬機各項參數。
jinfo 命令格式如下:
$jinfo [option] pid
下面是一個執行樣例:
4. jmap:Java記憶體映像工具
jmap 命令用於生成堆轉儲快照。還可以查詢 finalize 執行隊列、Java 堆和方法區的詳細資訊,如空間使用率,當前使用的收集器版本等等。
另外,通過虛擬機的XX: +HeapDumpOnOutOfMemoryError
參數,可以讓虛擬機在記憶體溢出之後自動生成堆轉儲快照。
jmap 命令格式如下:
$jmap [option] vmid
下面是一個使用樣例:
5. jhat:虛擬機堆轉儲快照分析工具
jhat 與 jmap 工具搭配使用,用於分析 jmap 產生的堆轉儲快照。。
jhat 內置了一個微型地 HTTP 伺服器,可以在瀏覽器中查看堆轉儲快照的分析結果。
但由於性能較差、功能較為簡陋,往往使用 VisualVM 代替這個工具。
6. jstack:Java堆棧跟蹤工具
jstack 引用書工程虛擬機當前的執行緒快照。執行緒快照是虛擬機內每一條執行緒正在執行的方法堆棧的集合,生成執行緒快照的目的通常是定位執行緒出現長時間停頓的原因,如死鎖、死循環等。
jstack 命令格式如下:
$jstack [option] vmid
下面是一個使用樣例:
JDK5 開始,Thread
類新增了一個getAllStackTraces()
方法,可以獲取虛擬機中所有執行緒的StackTraceElement
對象,可以通過簡單的幾行程式碼完成 jstack 的大部分功能。