首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JDK 命令行工具箱實戰:jps、jstat、jinfo、jmap、jhat、jstack 全解析

     編輯:Java 綜合教學

工具總覽($JAVA_HOME/bin)

工具全稱核心功能
jpsJVM Process Status Tool列出本機 HotSpot 進程(LVMID=PID)、主類名、參數
jstatJVM Statistics Monitoring Tool類加載/內存/GC/JIT 編譯 運行時統計,文本界面首選
jinfoConfiguration Info for Java查看/修改 JVM 配置參數(含默認值)
jmapMemory Map for Java堆轉儲快照、堆詳情、對象統計、永久代/元空間統計
jhatJVM Heap Dump Browser分析 heapdump,啟動 HTTP 服務供瀏覽器查看
jstackStack Trace for Java線程堆疊快照,定位死鎖/長時間停頓

核心工具高頻用法

jps

jps -l          # 顯示主類全名/JAR 路徑
jps -v          # 顯示 JVM 啟動參數
jps -m          # 顯示 main 方法參數

jstat

jstat -gc  1000 10   # 每秒查詢一次 GC 狀態,共 10 次
jstat -class         # 類加載統計
jstat -compiler      # JIT 編譯統計

常用 option:-class、-gc、-gccapacity、-gcutil、-gccause、-compiler、-printcompilation。

jinfo

jinfo -flag MaxHeapSize       # 查詢單個參數值
jinfo -flags                  # 打印所有參數(含未顯式設置的默認值)
jinfo -flag +PrintGCDetails   # 運行時動態開啟 GC 日誌(部分參數支援)

jmap

jmap -dump:live,format=b,file=heap.hprof   # 僅存活對象導出
jmap -heap                                # 堆配置/使用詳情(Linux/Solaris)
jmap -histo                               # 對象統計:類、實例數、總大小
jmap -permstat                            # ClassLoader 維度永久代統計(Linux/Solaris)
jmap -F                                   # 強制導出(進程無響應時)

jhat

jhat -port 7000 heap.hprof
# 瀏覽器訪問 https://localhost:7000 查看 OQL 查詢、對象引用鏈等

jstack

jstack -l      # 含鎖信息(定位死鎖關鍵)
jstack -m      # 含 Native C/C++ 堆疊(JNI 調用排查)
jstack -F      # 強制導出(進程掛起時)

輸出關鍵狀態:RUNNABLE、BLOCKED (等待鎖)、WAITING/TIMED_WAITING、deadlock 字樣。

實戰排查場景

  • CPU 飆高:jstack 多次抓取 → 對比 RUNNABLE 線程堆疊 → 定位熱點代碼行。
  • OOM:jmap -dump:live 導出堆 → jhat/MAT/Eclipse MAT 分析支配者樹。
  • 死鎖:jstack -l 直接報告 Found one Java-level deadlock。
  • 類加載洩漏:jstat -class 觀察 Loaded/Unloaded 趨勢,jmap -permstat 定位 ClassLoader。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved