01 JVM的参数类型、jinfo & jps(参数和进程查看)、jstat(类加载、垃圾收集、JIT 编译)
JVM的参数类型
标准参数(各版本中保持稳定)
-help
-server -client
-version -showversion
-cp -classpath
X 参数(非标准化参数)
-Xint:解释执行
-Xcomp:第一次使用就编译成本地代码
-Xmixed:混合模式,JVM 自己决定是否编译成本地代码
示例:
java -version(默认是混合模式)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
java -Xint -version
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, interpreted mode)
XX 参数(非标准化参数)
主要用于 JVM调优和 debug
- Boolean类型
格式:-XX:[+-]<name>表示启用或禁用 name 属性 如:-XX:+UseConcMarkSweepGC -XX:+UseG1GC
- 非Boolean类型
格式:-XX:<name>=<value> 表示 name 属性的值是 value 如:-XX:MaxGCPauseMillis=500 -XX:GCTimeRatio=19 -Xmx -Xms属于 XX 参数 -Xms 等价于-XX:InitialHeapSize -Xmx 等价于-XX:MaxHeapSize -xss 等价于-XX:ThreadStackSize
查看
jinfo -flag MaxHeapSize <pid>
-XX:+PrintFlagsInitial
-XX:+PrintFlagsFinal
-XX:+UnlockExperimentalVMOptions 解锁实验参数
-XX:+UnlockDiagnosticVMOptions 解锁诊断参数
-XX:+PrintCommandLineFlags 打印命令行参数
输出结果中=表示默认值,:=表示被用户或 JVM 修改后的值
示例:java -XX:+PrintFlagsFinal -version
补充:测试中需要用到 Tomcat,CentOS 7安装示例如下
sudo yum -y install java-1.8.0-openjdk* wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.54/bin/apache-tomcat-8.5.54.tar.gz tar -zxvf apache-tomcat-8.5.54.tar.gz mv apache-tomcat-8.5.54 tomcat cd tomcat/bin/ sh startup.sh
jps
详情参考 jps官方文档
-l
jinfo
jinfo -flag MaxHeapSize <pid>
jinfo -flags <pid>
jstat
详情参考 jstat 官方文档
类加载
# 以下1000表每隔1000ms 即1秒,共输出10次 jstat -class <pid> 1000 10
垃圾收集
-gc, -gcutil, -gccause, -gcnew, -gcold
jstat -gc <pid> 1000 10
以下大小的单位均为 KB
S0C, S1C, S0U, S1U: S0和 S1的总量和使用量
EC, EU: Eden区总量与使用量
OC, OU: Old区总量与使用量
MC, MU: Metacspace区(jdk1.8前为 PermGen)总量与使用量
CCSC, CCSU: 压缩类区总量与使用量
YGC, YGCT: YoungGC 的次数与时间
FGC, FGCT: FullGC 的次数与时间
GCT: 总的 GC 时间
JIT 编译
-compiler, -printcompilation