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进程
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9cXT0sGVNVnVIVmb1IjY1QWbihGZzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcugDNyEDNxEDM4EDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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
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