jstat虚拟机统计信息监控工具
1、jstat(JVM Statistics Monitorning Tool)
用于监控虚拟机各种运行状态信息的命令行工具。
它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,它是运行期定位虚拟机
性能问题的首选工具。
jstat命令中的参数 interval
和 count
代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要
每250毫秒查询一次进程2764垃圾收集的情况,一共查询20次,那么命令应该是:jstat -gc 2764 250 20
2、主要选项
选项 | 作用 |
---|---|
-class | 监视类装载、卸载数量、总空间及类装载所耗费的时间 |
-gc | 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等容量、已用空间、GC合计时间等信息 |
-gccapacity | 监视内容与-gc基本相同,但输出主要关注java堆各区域使用到的最大和最小空间 |
-gcutil | 监控内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
-gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
-gcnew | 监视新生代GC的状况 |
-gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间 |
-gcold | 监视老年代GC的状况 |
-gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大和最小空间 |
-gcmetacapacity | 输出永久代使用到的最大和最小空间 |
-compiler | 输出JIT编译器编译过的方法、耗时等信息 |
-printcompilation | 输出已被JIT编译的方法 |
2.1 统计加载类的信息
命令:jstat -class pid
列名 | 说明 |
---|---|
Loaded | 装载的类的数量 |
Bytes | 装载类所占用的字节数 |
Unloaded | 卸载类的数量 |
Bytes | 卸载类所占用的字节数 |
Time | 装载类和卸载类所耗费的时间(毫秒) |
2.2 编译统计
命令:jstat -compiler pid
列名 | 说明 |
---|---|
Compiled | 编译任务执行数量 |
Failed | 编译任务执行失败的数量 |
Invalid | 编译任务失效的数量 |
Time | 编译总耗时(毫秒) |
FailedType | 最后一个编译失败任务的类型 |
FailedMethod | 最后一个编译失败任务所在的类及方法 |
2.3 垃圾回收统计
命令:jstat -gc pid
列名 | 说明 |
---|---|
S0C | 年轻代中第一个survior(幸存区)的容量(kb) |
S1C | 年轻代中第二个survior(幸存区)的容量(kb) |
S0U | 年轻代中第一个survior(幸存区)目前已使用的容量(kb) |
S1U | 年轻代中第二个survior(幸存区)目前已使用的容量(kb) |
EC | eden区的容量(kb) |
EU | eden区目前已使用的容量(kb) |
OC | 老年代的容量(kb) |
OU | 老年目前已使用的容量(kb) |
MC | 方法区的容量(kb) |
MU | 方法区目前已使用的容量(kb) |
CCSC | 压缩类空间的容量(kb) |
CCSU | 压缩类空间目前已使用的容量(kb) |
YGC | 从应用程序启动到采集时年轻代中gc次数 |
YGCT | 从应用程序启动到采集时年轻代中gc所用时间(秒) |
FGC | 从应用程序启动到采集时老年代中gc次数 |
FGCT | 从应用程序启动到采集时老年代gc所用的时间(秒) |
GCT | 从应用程序启动到采集时gc所用的总时间(秒) |
2.4 统计gc信息
命令:jstat -gcutil pid
列名 | 说明 |
---|---|
S0 | 年轻代中第一个(survisor)幸存区已使用的容量占比 |
S1 | 年轻代中第二个(survisor)幸存区已使用的容量占比 |
E | 伊旬园(eden)区已使用的容量占比 |
O | 老年代区已使用的容量占比 |
M | 元数据区已使用的占当前容量百分比 |
CCS | 压缩类空间使用的占当前容量百分比 |
YGC | 年轻代到目前gc次数 |
YGCT | 年轻代到目前gc耗费的总时间(秒) |
FGC | 老年代目前gc次数 |
FGCT | 老年代目前gc耗费的总时间(秒) |
GCT | 从应用程序到目前gc总耗时(秒) |
2.5 堆内存统计
命令:jstat -gccapacity pid
列名 | 说明 |
---|---|
NGCMN | 年轻代(young)中初始化(最小)的大小(kb) |
NGCMX | 年轻代(young)中初始化(最大)的大小(kb) |
NGC | 年轻代(young)中当前的容量(kb) |
S0C | 年轻代中第一个(survisor)幸存区的容量(kb) |
S1C | 年轻代中第二个(survisor)幸存区的容量(kb) |
EC | 年轻代中(Eden)伊旬园的容量(kb) |
OGCMN | 老年代(old)中初始化(最小)的容量(kb) |
OGCMX | 老年代(old)中初始化(最大)的容量(kb) |
OGC | 当前老年代的大小(kb) |
OC | 当前老年代的大小(kb) |
MCMN | 最小元数据容量(kb) |
MCMX | 最大元数据容量(kb) |
MC | 当前元数据空间大小(kb) |
CCSMN | 最小压缩类空间大小(kb) |
CCSMX | 最大压缩类空间大小(kb) |
CCSC | 当前压缩类空间大小(kb) |
YGC | 从应用程序启动到采集时年轻代gc的次数 |
FGC | 从应用程序启动带采集时老年代gc的次数 |
2.6 新生代垃圾回收统计
命令:jstat -gcnew pid
列名 | 说明 |
---|---|
S0C | 年轻代中第一个(survisor)幸存区的容量(kb) |
S1C | 年轻代中第二个(survisor)幸存区的容量(kb) |
S0U | 年轻代中第一个(survisor)幸存区目前已使用的容量(kb) |
S1U | 年轻代中第二个(survisor)幸存区目前已使用的容量(kb) |
TT | 对象在新生代中存活的次数 |
MTT | 对象在新生代中存活的最大次数 |
DSS | 当前需要survivor(幸存区)的容量 (kb) |
EC | 伊旬园(eden)区的大小(kb) |
EU | 伊旬园(eden)区已使用的大小(kb) |
YGC | 到目前年轻代gc的次数 |
YGCT | 到目前年轻代gc所耗费的时间(秒) |
2.7 新生代内存统计
命令:jstat -gcnewcapacity pid
列名 | 说明 |
---|---|
MGCMN | 年轻代中初始化最小容量(kb) |
MGCMX | 年轻代中初始化最大容量(kb) |
NGC | 年轻代当前容量(kb) |
S0CMX | 年轻代第一个幸存区(survisor)最大容量(kb) |
S0C | 年轻代第一个幸存区(survisor)当前容量(kb) |
S1CMX | 年轻代第二个幸存区(survisor)最大容量(kb) |
S1C | 年轻代第二个幸存区(survisor)当前容量(kb) |
ECMX | 年轻代伊旬园区(Eden)最大容量(kb) |
EC | 年轻代伊旬园区(Eden)当前容量(kb) |
YGC | 截止到目前年轻代gc次数 |
FGC | 截止到目前老年代gc次数 |
2.8 老年代垃圾回收统计
命令:jstat -gcold pid
列名 | 说明 |
---|---|
MC | 方法区大小(kb) |
MU | 方法区使用大小(kb) |
CCSC | 压缩类空间大小 |
CCSU | 压缩类空间使用大小 |
OC | 老年代容量(kb) |
OU | 老年代已使用容量(kb) |
YGC | 年轻代gc次数 |
FGC | 老年代gc次数 |
FGCT | 老年代gc时消耗时间 |
GCT | 截止到目前gc耗费的总时间(秒) |
2.9 老年代内存统计
命令:jstat -gcoldcapacity pid
列名 | 说明 |
---|---|
OGCMN | 老年代最小容量(kb) |
OGCMX | 老年代最大容量(kb) |
OGC | 老年代目前生成的容量(kb) |
OC | 老年代目前容量(kb) |
YGC | 截止到目前年轻代gc次数 |
FGC | 截止到目前老年代gc次数 |
FGCT | 截止到目前老年代gc耗费的总时间(秒) |
GCT | 截止到目前gc耗费的总时间(秒) |
2.10 永久代内存统计
命令:jstat -gcmetacapacity pid
列名 | 说明 |
---|---|
MCMN | 最小元数据容量(kb) |
MCMX | 最大元数据容量(kb) |
MC | 当前元数据空间大小 |
CCSMN | 最小压缩类空间大小 |
CCSMX | 最大压缩类空间大小 |
CCSC | 当前压缩类空间大小(kb) |
YGC | 截止目前年轻代gc次数 |
FGC | 截止目前老年代gc次数 |
FGCT | 截止目前年轻代gc耗费的总时间(秒) |
GCT | 截止目前老年代gc耗费的总时间(秒) |
2.11 最近二次gc统计
命令:gstat -gccause pid
列名 | 说明 |
---|---|
S0 | 年轻代中第一个(survisor)幸存区已使用的容量占比 |
S1 | 年轻代中第二个(survisor)幸存区已使用的容量占比 |
E | 伊旬园(eden)区已使用的容量占比 |
O | 老年代区已使用的容量占比 |
M | 元数据区已使用的占当前容量百分比 |
CCS | 压缩类空间使用的占当前容量百分比 |
YGC | 年轻代到目前gc次数 |
YGCT | 年轻代到目前gc耗费的总时间(秒) |
FGC | 老年代目前gc次数 |
FGCT | 老年代目前gc耗费的总时间(秒) |
GCT | 从应用程序到目前gc总耗时(秒) |
LGCC | 最近垃圾回收的原因 |
GCC | 当前垃圾回收的原因 |
2.12 JVM编译方法统计
命令:jstat -printcompilation pid
列名 | 说明 |
---|---|
Compiled | 最近编译方法的数量 |
Size | 最近编译方法的字节码数量 |
Type | 最近编译方法的编译类型 |
Method | 方法名标识 |