JVM 命令指北(3)-jstat 命令

1. jstat 工具简介

jstat(JVM Statistics Monitoring Tool) 用于监控虚拟机各种运行状态信息,可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。它位于JDK 的 bin 目录下,可利用JVM内建的指令对Java应用程序的资源和性能进行实时的监控,包括了对Heap size和垃圾回收状况的监控

2. jstat 参数及功能

2.1 jstat 参数总览

在 Linux/Mac 系统下,只要在终端中使用命令 man jstat 都可以方便地查看 jstat 命令的帮助文档。JDK1.8 jstat 命令的格式如下:
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

  • 参数解释:
命令参数 功能
Option 选项,一般使用 -gcutil 查看gc情况,必需
vmid VM的进程号,即运行的java进程号,必需
interval 间隔时间,单位为秒或者毫秒
count 打印次数,如果缺省则打印无数次

Option 代表了查看信息的类型,主要分为3类:类装载、垃圾收集和运行期编译状况,取值范围如下:

选项 功能
-class 类加载的信息统计
-compiler HotSpot即时编译器的行为统计
-gc 堆的垃圾回收器的行为统计
-gccapacity JVM 各代区域以及对应空间的容量统计
-gccause 垃圾回收的摘要信息(等同于-gcutil), 以及最后的和当前的(如适用)垃圾回收事件的原因
-gcnew 新生代的 gc 信息统计
-gcnewcapacity 新生代及其对应空间的大小统计
-gcold 老年代 gc 信息统计
-gcoldcapacity 老年代的大小统计
-gcpermcapacity 永久代的大小统计,JDK 1.8 不在有永久代,已放弃支持
-gcutil 垃圾回收统计的摘要信息
-printcompilation HotSpot汇编方法统计

2.2 Option 参数详解

2.2.1 –class

class 参数监视类装载、卸载数量、总空间及类装载所耗费的时间,常用方式为 jstat –class <pid>,打印信息含义如下:

列字段 表示的信息
Loaded 加载的类的数量
Bytes 加载的 Kb 数
Unloaded 已卸载的类的数量
Bytes 已卸载的Kb 数
Time 执行类的加载和卸载操作所耗费的时间

2.2.2 –compiler

compiler选项输出即时(Just-In-Time)编译器的统计信息,使用方式jstat -compiler <pid>,打印信息的含义:

列字段 表示的信息
Compiled 已执行的编译任务数
Failed 失败的编译任务数
Invalid 无效的编译任务数
Time 执行编译任务所耗费的时间
FailedType 最后失败的编译的编译类型
FailedMethod 最后失败的编译的类名和方法

2.2.3 -gc

jstat -gc <pid> 可以打印 gc 的信息,查看 gc 的次数及消耗的时间

列字段 表示的信息
S0C survivor space 0的当前容量(KB)
S1C survivor space 1的当前容量(KB)
S0U survivor space 0使用的容量(KB)
S1U survivor space 1使用的容量(KB)
EC Eden space 的当前容量(KB)
EU Edenspace 的已用容量(KB)
OC Oldspace 的当前容量(KB)
OU Old space 的已用容量(KB)
PC Permanent space 的当前容量(KB)
PU Permanentspace 的已用容量(KB)
YGC Young generation 的GC事件数量
YGCT Young generation 的垃圾回收事件
FGC Full GC 事件的数量
FGCT Full GC 的时间
GCT 总计的垃圾回收时间

2.2.4 -gccapacity

jstat -gccapacity <pid>可以显示VM内存中各代区域中对象的使用和占用大小

列字段 表示的信息
NGCMN new generation 的最小容量(KB)
NGCMX new generation 的最大容量(KB)
NGC new generation 的当前容量(KB)
S0C survivor space 0 的当前容量(KB)
S1C survivor space 1 的当前容量(KB)
EC Eden space 的当前容量(KB)
OGCMN Old generation 的最小容量(KB)
OGCMX Old generation 的最大容量(KB)
OGC Old generation 的当前容量(KB)
OC Old space 的当前容量(KB)
PGCMN Permanent generation 的最小容量(KB)
YGC Young generation 的GC事件数
FGC Full GC 事件的数量

2.2.5 - gcutil

jstat -gcutil <pid> 打印垃圾回收统计的摘要信息

列字段 表示的信息
S0 Survivor space 0已用容量占当前容量的百分比
S1 Survivor space 1已用容量占当前容量的百分比
E Eden space已用容量占当前容量的百分比
O Old space已用容量占当前容量的百分比
P Permanent space已用容量占当前容量的百分比
YGC young generation的GC事件数
YGCT Young generation的垃圾回收时间
FGC Full GC事件的数量
FGCT Full GC的时间
GCT 总计的垃圾回收时间

2.2.6 -gccause

jstat -gccause <pid>显示与-gcutil选项相同的垃圾回收统计摘要信息,但却添加了最后的和当前的(如适用)垃圾回收事件的原因,主要为以下两列:

列字段 表示的信息
LGCC 最后的垃圾回收的原因
GCC 当前的垃圾回收的原因

2.2.7 -gcnew

jstat -gcnew <pid> 打印年轻代垃圾回收信息

列字段 表示的信息
S0C survivor space 0的当前容量(KB)
S1C survivor space 1的当前容量(KB)
S0U survivor space 0的已用容量(KB)
S1U survivor space 1的已用容量(KB)
TT Tenuring threshold 对象年龄期限阈值,超过则晋升到老年代
MTT 对象年龄最大的期限阈值,最大为15,因为对象头中使用 4 个比特位保存该值
DSS 所需的幸存者(survivor)大小(KB)
EC Eden space的当前容量(KB)
EU Eden space的已用容量(KB)
YGC Young generation 的GC事件数
YGCT Young generation 的垃圾回收时间

2.2.8 -gcnewcapacity

jstat -gcnewcapacity <pid> 打印年轻代容量及其对应空间

列字段 表示的信息
NGCMN 新生代最小容量, 单位KB
NGCMX 新生代最大容量, 单位KB
NGC 当前新生代容量, 单位KB
S0CMX S0空间最大容量, 单位KB
S0C 当前S0空间容量, 单位KB
S1CMX S1空间最大容量, 单位KB
S1C 当前S1空间容量, 单位KB
ECMX Eden空间最大容量, 单位KB
EC 当前Eden空间容量, 单位KB
YGC 新生代GC(Minor GC/Young GC)发生的次数
FGC Full GC发生的次数

2.2.9 -gcold

jstat -gcold <pid> 打印老年代(old generation)以及元空间(metaspace)相关gc信息

列字段 表示的信息
MC 元空间(Metaspace)容量, 单位KB
MU 元空间(Metaspace)使用量, 单位KB
CCSC CCS空间容量, 单位KB
CCSU CCS空间使用量, 单位KB
OC 当前老年代容量, 单位KB
OU 老年代使用量, 单位KB
YGC 新生代GC(Minor GC/Young GC)发生的次数
FGC Full GC发生的次数
FGCT Full GC消耗的时间, 单位s
GCT 所有GC消耗的总时间(包含YGC和FGC), 单位s

2.2.10 -gcoldcapacity

jstat -gcoldcapacity <pid> 打印老年代容量信息

列字段 表示的信息
OGCMN 老年代最小容量, 单位KB
OGCMX 老年代最大容量, 单位KB
OGC 当前老年代容量, 单位KB
OC 当前老年代容量, 单位KB
YGC 新生代GC(Minor GC/Young GC)发生的次数
FGC Full GC发生的次数
FGCT Full GC消耗的时间, 单位s
GCT 所有GC消耗的总时间(包含YGC和FGC), 单位s

2.2.11 -gcmetacapacity

jstat -gcmetacapacity <pid> 打印元空间容量信息

列字段 表示的信息
MCMN 元空间(Metaspace)最小容量, 单位KB
MCMX 元空间(Metaspace)最大容量, 单位KB
MC 当前元空间(Metaspace)容量, 单位KB
CCSMN CCS空间最小容量, 单位KB
CCSMX CCS空间最大容量, 单位KB
YGC 新生代GC(Minor GC/Young GC)发生的次数
FGC Full GC发生的次数
FGCT Full GC消耗的时间, 单位s
GCT 所有GC消耗的总时间(包含YGC和FGC), 单位s

2.2.12 -printcompilation

jstat -printcompilation <pid> 打印编译方法(JIT)相关信息

列字段 表示的信息
Compiled 由最近编译的方法执行的编译任务的数量
Size 最近编译的方法的字节码的字节数
Type 最近编译的方法的编译类型
Method 标识最近编译的方法的类名和方法名
发布了97 篇原创文章 · 获赞 88 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45505313/article/details/103214288