01、檢視參數
java -XX:+PrintFlagsFinal -version > flags.txt
值得注意的是"="表示預設值,":="表示被使用者或JVM修改後的值
02、實踐和機關換算
- 1Byte(位元組)=8bit(位)
- 1KB=1024Byte(位元組)
- 1MB=1024KB
- 1GB=1024MB
- 1TB=1024GB
- 設定堆記憶體大小和參數列印 -Xmx100M -Xms100M -XX:+PrintFlagsFinal
- 查詢+PrintFlagsFinal的值 :=true
- 查詢堆記憶體大小MaxHeapSize := 104857600
- 換算 104857600(Byte)/1024=102400(KB) 102400(KB)/1024=100(MB)
- 結論 104857600是位元組機關
03、常用參數含義
略:-Xmx20m -Xms20m -Xmn2m
04、常用指令
jps
檢視java程序
jinfo
實時檢視和調整JVM配置參數
jinfo -flags PID
檢視某個java程序的name屬性的值 jinfo -flag name PID
jinfo -flag MaxHeapSize PID
jinfo -flag UseG1GC PID
修改java程序的某個值
jinfo -flag [+|-]<name> pid ->設定指定JVM參數的布爾值
jinfo -flag <name>=<value> pid ->設定指定JVM參數的值
jstat
檢視虛拟機性能統計資訊
檢視類裝載資訊
檢視某個java程序的類裝載資訊,每1000毫秒輸出一次,共輸出10次
jstat -class PID 1000 10
檢視垃圾收集資訊
jstat -gc PID 1000 10
jstack
檢視線程堆棧資訊
jstack PID
案例:排查死鎖案例
jmap
列印出堆記憶體相關資訊
jmap -heap PID
dump出堆記憶體相關資訊
jmap -dump:format=b,file=heap.hprof PID
發生堆記憶體溢出的時候,自動dump 堆記憶體日志
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
05、Arthas 【重要】
https://github.com/alibaba/arthas
https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn
06、MAT
Java堆分析器,用于查找記憶體洩漏
下載下傳位址:
https://www.eclipse.org/mat/downloads.php
06、GC日志
開啟GC日志:
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:gc.log