天天看点

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