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的統計資訊。 |