说明
jstat (Java Virtual Machine (JVM) statistics) 是用来监控JVM的工具
概要
使用: jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]
- generalOption 表示一个整体命令(-class,-gc,-gcold等),表示要监控的是什么数据(-class收集类加载器信息,-gc收集垃圾回收相关信息), 可使用的命令列表可使用
jstat -options
进程查看 - outputOptions 输出信息选项,目前支持:
- -t:显示JVM时间戳,表示的是JVM启动后运行的时间,单位是秒
- -h:设置每多少次信息输出之后,就再输出一次每一列的列名
- -J:用来设置java参数的,例如 -J-Xms48m 表示设置启动内存为48M
- vmid 虚拟机地址,如果在本机的话,就是 JVM 进程id,远端则使用
[protocol:][//]lvmid[@hostname[:port]/servername]
进行连接 -
interval[s ms] 表示统计间隔时间,不加单位默认ms - count 统计次数
interval 和 count 都不加,则只统计一次,加 interval,不加 count,则无限次统计
例子
以下例子都是使用 30443 这个进程
-class
类加载统计
- Loaded:加载的类个数
- Bytes:占用的字节数(KBs)
- Unloaded: 卸载的类个数
- Bytes: 卸载的类的字节数(KBs)
- times: 执行加载类和卸载类所花费的时间
-compiler
HotSpot虚拟机JIT(just-in-time)编译统计
- Compiled: 执行的编译任务数
- Failed: 执行失败的编译任务数
- Invalid: 已失效的编译任务数
- FailedType: 最后一次失败的编译任务类型
- FailedMethod: 最后一次编译失败的类名和方法名
-gc
垃圾收集堆信息统计,以下大小单位都是KB
- S0C: 0号survivor区大小
- S1C: 1号survivor区大小
- S0U: 0号survivor区已使用空间大小
- S1U: 1号survivor区已使用空间大小
- EC: eden区域大小
- EU: eden区域已使用空间大小
- OC: old老年代区域空间大小
- OU: old老年代区域已使用空间大小
- MC: Metaspace元数据空间大小
- MU: Metaspace元数据已使用空间大小
- CCSC(Compressed class space capacity): 压缩类空间的大小
- CCSU: 压缩类空间已使用的大小
- YGC: young GC 发生次数
- YGCT: young GC 所花费的总时间
- FGC: full GC 发生次数
- FGCT: full GC 所花费的总时间
- GCT: GC所花费的总时间
-gccapacity
内存池各个代(新生代,老年代)空间大小统计信息,单位kB
- NGCMN: 新生代空间最小值.
- NGCMX: 新生代空间最大值 .
- NGC: 当前新生代大小 .
- S0C: 当前0号Surviver区大小.
- S1C: 当前1号Surviver区大小.
- EC: 当前Eden区域大小
- OGCMN: 老年代空间最小值
- OGCMX: 老年代空间最大值
- OGC: 当前老年代大小
- OC: 当前老年代大小
- MCMN: metaspace元数据空间最小值
- MCMX: metaspace元数据空间最大值
- MC: Metaspace元数据空间当前大小
- CCSMN: 压缩类空间的最小值
- CCSMX: 压缩类空间的最大值
- CCSC: 压缩类空间的当前大小
- YGC: young GC 发生次数
- FGC: full GC 发生次数
-gcutil
垃圾收集统计信息摘要
- S0: 0号Survivor当前已使用的百分比
- S1: 1号Survivor当前已使用的百分比
- E: Eden区域使用百分比
- O: 老年代使用百分比
- M: Metaspace元数据使用百分比
- CCS: 压缩类使用空间百分比
- YGC: young GC 发生次数
- YGCT: young GC 所花费的时间
- FGC: full GC 发生次数
- FGCT: Full gc 所花费的时间
- GCT: GC的总时间
其他选项的使用
可参考 man jstat
的说明.