天天看點

JVM常用指令

  1. JVM常用指令

jps 顯示系統中所有Hotspot虛拟機程序
jstat 收集Hotspot虛拟機各方面運作資料
jstack 顯示虛拟機的線程的棧資訊
jinfo 顯示和修改虛拟機的各項配置資訊
jmap 生成虛拟機的堆記憶體的快照資訊,查詢finalize執行隊列,Java堆和永久代詳細資訊
javap 檢視經javac之後産生的JVM位元組碼代碼
jcmd 一個多功能工具,可以用來導出堆,檢視java程序,導出線程資訊,執行GC、檢視性能相關資料
jconsole 基于JMX的可視化監視、管理工具
jvisualvm JDK中最強大運作監視和故障處理工具

(1). jps指令

   JVM Process Status Tool,該指令用于列出正在運作的虛拟機程序,顯示main類的名稱和虛拟機程序id。該指令受目前使用者的通路權限影響,比如linux下非root使用者隻列出目前使用者啟動的虛拟機程序。

常用參數:

-l 輸出主類全名
-v 輸出虛拟機程序啟動的jvm參數
-m 輸出啟動時傳遞給main函數的參數

(2). jstack指令

  用于生成虛拟機目前的線程快照資訊,包含每一條線程的堆棧資訊。該指令通常用于定位線程停頓原因,當出現線程停頓時,可通過stack檢視每個線程的堆棧資訊,進而分析停頓原因。

常用參數:

-l 除堆棧外,顯示鎖的附加資訊
-F 當請求不被響應時,強制輸出線程堆棧
-m 混合模式,列印java和本地C++調用的堆棧資訊

(3). jstat指令

  用于監控各種運作狀态資訊的指令。在隻有文本控制台的環境中(如企業中的生産環境),該工具非常有用。 可以用來顯示系統中類裝載、垃圾回收、運作期編譯狀況等運作資料。

常用參數:

class 類裝載相關資訊.
compiler JIT編譯器編譯過的方法、耗時等.
gc java堆資訊和垃圾回收狀況.
gccapacity 關注java堆各個區的最大和最小空間.
gccause 類似gcutil,額外輸出導緻上一次gc的原因.
gcnew 新生代gc狀況.
gcnewcapacity 關注新生代gc使用的最大和最小空間.
gcold 老年代gc狀況.
gcoldcapacity 關注老年代gc使用的最大和最小空間.
gcpermcapacity 關注持久代gc使用的最大和最小空間.
gcutil 關注已使用空間占總空間比例.
printcompilation 輸出已經被JIT編譯的方法.

(4). jinfo指令

  用于檢視和修改虛拟機的各項參數資訊

(5). jmap指令

  可以産生堆dump檔案,查詢堆和持久代的詳細資訊等。

常用參數:

-dump 生成堆dump檔案,格式為: -dump:[live,]format=b,file=<filename>
-heap 顯示java堆的詳細資訊,包括垃圾回收期、堆配置和分代資訊等
-histo 顯示堆中對象的統計資訊,包括類名稱,對應的執行個體數量和總容量
-permstat 統計持久代中各ClassLoader的統計資訊。