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