基于JDK命令行工具的监控
基于JDK命令行工具的监控
1、JVM的参数类型
(1)标准参数
-help / -server -client /-version -showversion / -cp -classpath
(2)X参数(非标准化参数)
-Xint:解释执行
-Xcomp:第一次使用就编译成本地代码
-Xmixed:混合模式,JVM自己决定是否编译成本地代码
(3)XX参数
非标转化参数,相对不稳定,主要用于JVM调优和Debug
分类:
Boolean类型
格式: -XX:[+-]<name>表示启动或者禁用name属性
比如: -XX:+UseConcMarkSweepGC
非Boolean类型
格式: -XX:<name>=<value>表示name属性的值是value
比如: -XX:MaxGCPauseMills=500
-Xmx -Xms
不是X参数,而是XX参数
-Xms等价-XX:InitialHeapSize
-Xmx等价-XX:MaxHeapSize
2、查看运行时JVM参数
(1)-XX:+PrintFlagsInitial查看初始值
=表示默认值
:=被用户或者JVM修改后的值
https://docs.oracle.com可以查询
(2)-XX:+PrintFlagsFinal查看最终值
(3)-XX:+UnlockExperimentalVMOptions解锁实验参数
(4)-XX:+UnlockDiagnosticVMOptions解锁诊断参数
(5)-XX:+PrintCommandLineFlags打印命令行参数
3、jstat查看虚拟机统计信息
(1)类装载
格式:jstat -help
Options:-class,-compiler,-gc,-printcompilation
(2)垃圾收集
Options:-gc,-gcutil,-gccause,-gcnew,-gcold
-gc输出结果
S0C、S1C、S0U、S1U:S0和S1的总量与使用量
EC、EU:Eden区总量与使用量
OC、OU:Old区总量与使用量
MC、MU:Metaspace区总量与使用量
CCSC、CCSU:压缩类空间总量与使用量
YGC、YGCT:YoungGC的次数与时间
FGC、FGCT:FullGC的次数与时间
GCT:总的GC时间
(3)如何导出内存映像文件
内存溢出自动导出
-XX:+HeadDumpOnOutOfMemoryError
-XX:HeapDumpPath=./
使用jmap命令手动导出
4、MAT内存溢出
(1)eclispe mat工具
(2)打开内存映像文件,进行分析