常用JDK自帶命令行工具


網上有很詳細的命令行的使用,本篇只記錄很常用的幾個命令,為了方便以后自己查閱。

 

1、jps(JVM Process Status Tool):查看正在運行的java虛擬機進程

jps命令相當於Linux下的ps命令,只不過它只列出Java進程

  • jps:輸出java進程id和Main函數名稱
  • jps -l :輸出主函數的完整路徑
  • jps -v:輸出傳遞給java虛擬機的參數

 

2、jstat(JVM Statistics Mornitoring Tool):查看虛擬機運行時信息

jstat可以查看Java虛擬機各種運行狀態信息,可以通過它查看JAVA虛擬機進程中的類裝載、堆內存、垃圾收集、JIT編譯等運行數據

jstat -<options> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

 options:包含以下選項

  • -gc:顯示與GC相關信息
  • -gccause:顯示垃圾回收期相關信息,同時顯示最后一次垃圾回收的原因
  • -gccapacity:顯示各個代的容量和使用情況
  • -gcnew:顯示年輕代信息
  • -gcnewcapacity:顯示年輕代大小和使用情況
  • -gcold:顯示老年代信息
  • -gcoldcapacity:顯示老年代大小

 -t:在輸出信息前加上一個Timestamp列,顯示程序的運行時間

 vmid:與操作系統的PID是一致的

 interval:用於指定輸出統計數據的周期,單位為毫秒

 count:用於指定輸出幾次數據

使用示例:

需要每500毫秒查詢一次PID為1612垃圾回收情況,一共查詢5次,那命令如下:

jstat -gc 1612 500 5

輸出GC相關信息:

  • S0C,S1C:S0區和S1區大小,KB
  • S0U,S1U:S0區和S1區已使用大小,KB
  • EC,OC,MC:eden區,old老年代區,方法區大小,KB
  • EU,OU,MU:eden區,old老年代區,方法區已使用大小,KB
  • CCSC,CCSU:壓縮類空間大小,壓縮類空間使用大小,KB
  • YGC,FGC:年輕代GC,Full GC次數
  • YGCT,FGCT:年輕代GC,FullGC耗時
  • GCT:GC總耗時

 

3、jmap(Memory Map For Java):查看或導出堆快照信息

jmap可以生成Java程序的堆的dump文件,也可以查看堆內存對象的統計信息,查看ClassLoader的信息以及finalizer隊列

jmap [option] vmid

options:包含以下選項

  • -histo:顯示堆中對象統計信息,包括類、實例數量和合計容量
  • -dump:生成Java堆快照。格式為:-dump:[live,]format=b,file=<filename>,其中live子參數說明是否只dump出存活的對象

使用示例:

生成PID為1612前20名的對象統計信息,並將結果寫到/root/logs/jmapresult.txt

jmap -histo pid | head -20 > /root/logs/jmapresult.txt 

生成PID為1612的當前堆快照(生成的結果可以使用專門的工具進行分析)

jmap -dump:format=b,file=/root/logs/heap.hprof 1612

 

4、jhat(JVM Heap Analysis Tool):JDK自帶的堆分析工具

jhat命令與jmap命令搭配使用,用來分析jmap生成的堆快照信息。不過一般不會使用jhat命令來分析dump文件,因為其功能很簡陋。可以使用專門分析dump文件的Eclipse Memory Analyzer工具。

使用示例:

jhat /root/logs/heap.hprof

 

5、jstack(Stack Trace For Java):查看虛擬機當前時刻的線程快照

線程快照就是當前虛擬機內每一個線程正在執行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導致的長時間等待等都是導致線程長時間停頓的原因。

 jstack [option] vmid

options:包含以下選項

  -l :除堆棧外,顯示關於鎖的附加信息

使用示例:

生成PID為1612線程堆棧信息(會包含鎖信息),並將結果寫到/root/logs/jstack.txt

jstack -l 1612 > /root/logs/jstack.txt

 

 

6、jinfo(Configuration Info For Java):實時查看和調整虛擬機的各項參數

jinfo [option] <pid>

options:包含以下選項

  • -flags :打印VM參數
  • -sysprops:打印Java相關系統參數
  • <no option>:打印所有參數

 

7、圖形化界面(在jdk路徑的bin目錄下,點擊jvisualvm.exe) 

圖形界面一般用於測試環境(生產環境一般不允許遠程這樣操作) 。詳細的操作說明可參考https://blog.csdn.net/u012550080/article/details/81605189

 

 

參考地址:

https://blog.csdn.net/xiaoliuliu2050/article/details/74012382

https://blog.csdn.net/l2580258/article/details/80147602

https://www.cnblogs.com/yjd_hycf_space/p/7755633.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM