JVM监控调优

277 阅读2分钟

1. JVM 常用参数

1.1 JVM堆栈相关的参数

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:MaxPermSize=16m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=0

image.png

1.2 垃圾收集器相关参数

-XX:+UseParallelGC-XX:ParallelGCThreads=20-XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5-XX:+UseCMSCompactAtFullCollection:

image.png

1.3 日志相关的参数

-XX:+PrintGC-XX:+PrintGCDetails

image.png

2. JVM 调优基本命令

2.1 jps

JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。

image.png

2.2 jinfo

JVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数

(1) 查看java系统属性

等同于System.getProperties().格式:jinfo -sysprops

image.png

(2)查看JVM参数

格式:jinfo -flag [属性name] PID (查看某个进程的属性name的值)

image.png

格式: jinfo -flags PID 查询多个属性的值

image.png

2.3 jstat

JVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

格式:jstat -class PID 1000 10 (查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10次)

image.png

  • Loaded:加载class的数量

  • Bytes:所占用空间大小

  • Unloaded:未加载数量

  • Bytes:未加载占用空间

  • Time:时间

(2) 查看垃圾回收信息

格式:jstat -gc PID 1000 10 (查看某个java进程的gc情况,每1000毫秒输出一次,共输出10次)

image.png

S0C :第一个Survivor区的空间
S1C:第二个Survivor区的空间
S0U:第一个Survivor区的使用空间
S1U:第二个Survivor区的使用空间
EC:Eden区的总空间
EU:Eden区的使用空间
OC:Old区的总空间
OU:Old区的已使用空间
MC:元空间的总空间
MU:元空间的使用空间
CCSC:压缩类的总空间
CCSU:压缩类的使用空间
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

2.4 jstack

用于生成java虚拟机当前时刻的线程快照。

image.png

2.5 jmap

JVM Memory Map命令用于生成heap dump文件

(1) 统计堆对象

格式:jmap -histo 1796

(2)打印出堆内存相关信息

格式:jmap -heap PID

image.png

(3) dump出堆内存相关信息

格式:jmap -dump:format=b,file=heap.hprof PID

2.6 jhat

jhat,JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看

最后

JVM系列主要介绍了JVM核心的基础概念,JVM整体的架构和JVM垃圾收集器和一些JVM监控调优的参数。
下面会根据线上故障介绍一下GC日志如何分析

参考文档

《JVM虚拟机》

《疯狂创客的JVM面试系列》