官方文档:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jstat.html
官方文档:https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/jstat.html
目录
jstat (JVM Statistics Monitoring Tool)
- 位于
jdk/bin/jstat.exe
- 监视本地JVM或者远程JVM进程中的类加载、内存、垃圾收集、即时编译等运行时数据。
-----------------------------------------------------------------------------读书笔记摘自 书名:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)作者:周志明
使用时机
在没有GUI图形界面、只提供了纯文本控制台
环境的服务器
上,它将是运行期定位虚拟机性能问题的常用工具。
启动方式
方式1、win+r → cmd → 直接使用jstat命令
方式2、idea → alt + f12 → 直接使用jstat命令
常见用法
统计已加载的类数量、卸载的类数量、总字节数等
jps -l → 2828 com.zhangziwa.practisesvr.model.Main
jstat -class 2828
Loaded Bytes Unloaded Bytes Time
1022 2390.0 0 0.0 0.08
Loaded: 已加载的类的数量为 3456 个。
Bytes: 已加载的类占用的字节数为 102400 字节(即 100 KB)。
Unloaded: 已卸载的类的数量为 1234 个。
Bytes: 已卸载的类释放的字节数为 49152 字节(即 48 KB)。
Time: 类加载和卸载所花费的时间为 12.345 秒
统计编译任务的数量、编译时间等
jps -l → 2828 com.zhangziwa.practisesvr.model.Main
jstat -compiler 2828
Compiled Failed Invalid Time FailedType FailedMethod
617 1 0 0.44 1 java/util/HashMap putVal
Compiled: 已成功编译的方法数量为 1234 个。
Failed: 编译失败的方法数量为 5 个。
Invalid: 被标记为无效的方法数量为 10 个。
Time: 编译所花费的时间为 12.3 秒。
FailedType: 最后一次编译失败的原因类型为 0(表示正常,即没有特定的失败原因)。
FailedMethod: 最后一次编译失败的方法名称为空(用 - 表示),意味着没有具体的失败方法记录。
统计不同内存区域的使用百分比以及GC事件的详细信息
jps -l → 2828 com.zhangziwa.practisesvr.model.Main
jstat -gcutil 2828
S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT
0.00 0.00 22.08 8.37 85.29 43.60 812 0.469 0 0.000 0 0.000 0.469
S0: Survivor 0 区的使用率为 0.0%。
S1: Survivor 1 区的使用率为 0.0%。
E: Eden 区的使用率为 41.6%。
O: Old 区的使用率为 8.3%。
M: Metaspace 的使用率为 85.3%。
CCS: Compressed Class Space 的使用率为 43.7%。
YGC: Young GC 次数为 410 次。
YGCT: Young GC 花费的时间为 0.235 秒。
FGC: Full GC 次数为 0 次。
FGCT: Full GC 花费的时间为 0.000 秒。
GCT: 总的 GC 花费的时间为 0.235 秒。
统计不同内存区域的使用情况以及GC事件的详细信息
jps -l → 2828 com.zhangziwa.practisesvr.model.Main
jstat -gc 2828
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
0.0 0.0 0.0 0.0 157696.0 65536.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 410 0.235 0 0.000 0 0.000 0.235
S0C: Survivor 0 区的容量为 8192.0 KB
S1C: Survivor 1 区的容量为 8192.0 KB
S0U: Survivor 0 区已使用的空间为 0.0 KB(表示当前为空)
S1U: Survivor 1 区已使用的空间为 0.0 KB(表示当前为空)
EC: Eden 区的容量为 262144.0 KB
EU: Eden 区已使用的空间为 131072.0 KB(即 Eden 区的一半已被使用)
OC: Old 区的容量为 524288.0 KB
OU: Old 区已使用的空间为 419430.4 KB(即 Old 区大约 80% 已被使用)
MC: Metaspace 的容量为 104857.6 KB
MU: Metaspace 已使用的空间为 83886.1 KB(即 Metaspace 大约 80% 已被使用)
CCSC: Compressed Class Space 的容量为 10485.76 KB
CCSU: Compressed Class Space 已使用的空间为 8388.61 KB(即 Compressed Class Space 大约 80% 已被使用)
YGC: Young GC 次数为 410 次
YGCT: Young GC 花费的时间为 0.235 秒
FGC: Full GC 次数为 2 次
FGCT: Full GC 花费的时间为 0.567 秒
GCT: 总的 GC 花费的时间为 0.802 秒
jps -l → 2828 com.zhangziwa.practisesvr.model.Main
jstat -gc -h3 2828 1000 10 # id=2828的进程的gc情况,每隔1000ms打印一次记录,打印10次停止,每3行后打印指标头部
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
0.0 0.0 0.0 0.0 157696.0 104448.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 780 0.446 0 0.000 0 0.000 0.446
0.0 0.0 0.0 0.0 157696.0 24576.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 781 0.447 0 0.000 0 0.000 0.447
0.0 0.0 0.0 0.0 157696.0 88064.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 781 0.447 0 0.000 0 0.000 0.447
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
0.0 0.0 0.0 0.0 157696.0 4096.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 782 0.447 0 0.000 0 0.000 0.447
0.0 0.0 0.0 0.0 157696.0 67584.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 782 0.447 0 0.000 0 0.000 0.447
0.0 0.0 0.0 0.0 157696.0 131072.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 782 0.447 0 0.000 0 0.000 0.447
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
0.0 0.0 0.0 0.0 157696.0 47104.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 783 0.448 0 0.000 0 0.000 0.448
0.0 0.0 0.0 0.0 157696.0 106496.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 783 0.448 0 0.000 0 0.000 0.448
0.0 0.0 0.0 0.0 157696.0 18432.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 784 0.448 0 0.000 0 0.000 0.448
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
0.0 0.0 0.0 0.0 157696.0 69632.0 92160.0 7710.0 1536.0 1310.1 192.0 83.7 784 0.448 0 0.000 0 0.000 0.448
统计堆各个内存区域的容量信息,包括初始容量、当前容量和最大容量
jstat -gccapacity 2828
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC CGC
0.0 3983360.0 157696.0 0.0 0.0 157696.0 0.0 3983360.0 92160.0 92160.0 0.0 1056768.0 1536.0 0.0 1048576.0 192.0 864 0 0
NGCMN: 新生代最小容量为 344064.0 KB。
NGCMX: 新生代最大容量为 786432.0 KB。
NGC: 当前新生代容量为 344064.0 KB。
S0C: Survivor 0 区的初始容量为 8192.0 KB。
S1C: Survivor 1 区的初始容量为 8192.0 KB。
EC: Eden 区的初始容量为 227840.0 KB。
OGCMN: 老年代最小容量为 524288.0 KB。
OGCMX: 老年代最大容量为 1048576.0 KB。
OGC: 当前老年代容量为 524288.0 KB。
OC: Old 区的初始容量为 524288.0 KB。
MCMN: Metaspace 最小容量为 10485.76 KB。
MCMX: Metaspace 最大容量为 104857.6 KB。
MC: 当前 Metaspace 容量为 1536.0 KB。
CCSMN: Compressed Class Space 最小容量为 1048.58 KB。
CCSMX: Compressed Class Space 最大容量为 10485.76 KB。
CCSC: 当前 Compressed Class Space 容量为 192.0 KB。
YGC: Young GC 次数为 410 次。
FGC: Full GC 次数为 0 次。