天天看點

02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

01、檢視參數

java -XX:+PrintFlagsFinal -version > flags.txt

值得注意的是"="表示預設值,":="表示被使用者或JVM修改後的值

02、實踐和機關換算

  • 1Byte(位元組)=8bit(位)
  • 1KB=1024Byte(位元組)
  • 1MB=1024KB
  • 1GB=1024MB
  • 1TB=1024GB
  1. 設定堆記憶體大小和參數列印   -Xmx100M -Xms100M -XX:+PrintFlagsFinal
  2. 查詢+PrintFlagsFinal的值    :=true
  3. 查詢堆記憶體大小MaxHeapSize    := 104857600
  4. 換算   104857600(Byte)/1024=102400(KB)   102400(KB)/1024=100(MB)
  5. 結論   104857600是位元組機關

03、常用參數含義

略:-Xmx20m -Xms20m -Xmn2m

04、常用指令

jps 

檢視java程序

02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

jinfo

 實時檢視和調整JVM配置參數

jinfo -flags PID
02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

檢視某個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
02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

檢視垃圾收集資訊

jstat -gc PID 1000 10
02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

jstack

檢視線程堆棧資訊

jstack PID 
02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

案例:排查死鎖案例

02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

jmap 

列印出堆記憶體相關資訊

jmap -heap PID 
02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

dump出堆記憶體相關資訊

jmap -dump:format=b,file=heap.hprof PID 
02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志

發生堆記憶體溢出的時候,自動dump 堆記憶體日志

-XX:+HeapDumpOnOutOfMemoryError   -XX:HeapDumpPath=heap.hprof

05、Arthas 【重要】

https://github.com/alibaba/arthas

https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn

02-JVM實戰01、檢視參數02、實踐和機關換算03、常用參數含義04、常用指令05、Arthas 【重要】 06、MAT06、GC日志
06、MAT

Java堆分析器,用于查找記憶體洩漏

下載下傳位址:

https://www.eclipse.org/mat/downloads.php 

06、GC日志

開啟GC日志:

-XX:+PrintGCDetails  -XX:+PrintGCTimeStamps  -XX:+PrintGCDateStamps  -Xloggc:gc.log

jvm