jstat:虚拟机统计信息监控工具
属性 |
说明 |
Options |
选项,我们一般使用 -gcutil 查看gc情况 |
vmid |
VM的进程号,即当前运行的java进程号 |
interval |
间隔时间,单位为秒或者毫秒 |
count |
打印次数,如果缺省则打印无数次 |
jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选项工具。
jstat命令格式为:
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数解释:
属性 |
说明 |
Options |
选项,我们一般使用 -gcutil 查看gc情况 |
vmid |
VM的进程号,即当前运行的java进程号 |
interval |
间隔时间,单位为秒或者毫秒 |
count |
打印次数,如果缺省则打印无数次 |
选项 |
作用 |
-class |
监控类装载、卸载数量、总空间及类装载所耗费的时间 |
-gc |
监控Java堆状况,包括Eden区、2个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息 |
-gccapacity |
监控内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间 |
-gcutil |
监控内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
-gccause |
与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
-gcnew |
监控新生代GC的状况 |
-gcnewcapacity |
监控内容与-gcnew基本相同,输出主要关注使用到的最大与最小空间 |
-gcold |
监控老年代GC的状况 |
-gcoldcapacity |
监控内容与-gcold基本相同,输出主要关注使用到的最大与最小空间 |
-gcpermcapacity |
监控永久代使用到的最大和最小空间 |
-compiler |
输出JIT编译器编译过的方法、耗时等信息 |
-printcompilation |
输出已经被JIT编译的方法 |
jstat工具主要选项
选项 |
作用 |
-class |
监控类装载、卸载数量、总空间及类装载所耗费的时间 |
-gc |
监控Java堆状况,包括Eden区、2个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息 |
-gccapacity |
监控内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间 |
-gcutil |
监控内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
-gccause |
与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
-gcnew |
监控新生代GC的状况 |
-gcnewcapacity |
监控内容与-gcnew基本相同,输出主要关注使用到的最大与最小空间 |
-gcold |
监控老年代GC的状况 |
-gcoldcapacity |
监控内容与-gcold基本相同,输出主要关注使用到的最大与最小空间 |
-gcpermcapacity |
监控永久代使用到的最大和最小空间 |
-compiler |
输出JIT编译器编译过的方法、耗时等信息 |
-printcompilation |
输出已经被JIT编译的方法 |
STATOPTIONS和输出
下列表格概括了jstat为每个statOption输出的列。
- -class 类加载器的统计信息
列 |
描述 |
Loaded |
加载的类的数量 |
Bytes |
加载的Kbyte数 |
Unloaded |
已卸载的类的数量 |
Bytes |
已卸载的Kbyte数 |
Time |
执行类的加载和卸载操作所耗费的时间 |
- -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 |
Younggeneration的GC事件数量 |
YGCT |
Younggeneration的垃圾回收事件 |
FGC |
Full GC事件的数量 |
FGCT |
Full GC的时间 |
GCT |
总计的垃圾回收时间 |
- -gccapacity 内存池的分代和空间容量Memory Pool Generation and Space Capacities
列 |
描述 |
NGCMN |
newgeneration的最小容量(KB). |
NGCMX |
newgeneration的最大容量(KB). |
NGC |
newgeneration的当前容量(KB). |
S0C |
survivor space 0的当前容量(KB). |
S1C |
survivor space 1的当前容量(KB). |
EC |
Eden space的当前容量(KB). |
OGCMN |
Old generation的最小容量(KB). |
OGCMX |
Oldgeneration的最大容量(KB). |
OGC |
Oldgeneration的当前容量(KB). |
OC |
Old space的当前容量(KB). |
PGCMN |
Permanentgeneration的最小容量(KB). |
PGCMX |
Permanentgeneration的最大容量(KB). |
PGC |
Permanentgeneration的当前容量(KB). |
PC |
Permanent space的当前容量(KB). |
YGC |
Younggeneration的GC事件数 |
FGC |
Full GC事件的数量 |
- -gcutil 垃圾回收统计的摘要信息
[root@localhost ~]# jstat -gcutil 29817
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 38.77 100.00 9.00 � 21 1.300 3 0.715 2.015
列 |
描述 |
S0 |
Heap上的 Survivor space 0 区已使用空间的百分比 |
S1 |
Heap上的 Survivor space 1 区已使用空间的百分比 |
E |
Heap上的 Eden space 区已使用空间的百分比 |
O |
Heap上的 Old space 区已使用空间的百分比 |
P |
Perm space 区已使用空间的百分比 |
YGC |
从应用程序启动到采样时发生 Young GC 的次数 |
YGCT |
从应用程序启动到采样时 Young GC 所用的时间(单位秒) |
FGC |
从应用程序启动到采样时发生 Full GC 的次数 |
FGCT |
从应用程序启动到采样时 Full GC 所用的时间(单位秒) |
GCT |
从应用程序启动到采样时用于垃圾回收的总时间(单位秒) |
结果说明:
列 |
描述 |
S0 |
Heap上的 Survivor space 0 区已使用空间的百分比 |
S1 |
Heap上的 Survivor space 1 区已使用空间的百分比 |
E |
Heap上的 Eden space 区已使用空间的百分比 |
O |
Heap上的 Old space 区已使用空间的百分比 |
P |
Perm space 区已使用空间的百分比 |
YGC |
从应用程序启动到采样时发生 Young GC 的次数 |
YGCT |
从应用程序启动到采样时 Young GC 所用的时间(单位秒) |
FGC |
从应用程序启动到采样时发生 Full GC 的次数 |
FGCT |
从应用程序启动到采样时 Full GC 所用的时间(单位秒) |
GCT |
从应用程序启动到采样时用于垃圾回收的总时间(单位秒) |
- -gccause 垃圾回收统计,包括GC事件
此选项显示与-gcutil选项相同的垃圾回收统计摘要信息,但却包括最后的和当前的(如适用)垃圾回收事件的原因。除了-gcutil列出的列,此选项还添加了以下列:
列 |
描述 |
LGCC |
最后的垃圾回收的原因 |
GCC |
当前的垃圾回收的原因 |
- -gcnew 新生代(New)的统计信息
列 |
描述 |
S0C |
survivor space 0的当前容量(KB). |
S1C |
survivor space 1的当前容量(KB). |
S0U |
survivor space 0的已用容量(KB). |
S1U |
survivor space 1的已用容量(KB). |
TT |
期限阈值 |
MTT |
最大的期限阈值 |
DSS |
所需的幸存者(survivor)大小(KB). |
EC |
Eden space的当前容量(KB). |
EU |
Eden space的已用容量(KB). |
YGC |
Young generation的GC事件数 |
YGCT |
Young generation的垃圾回收时间 |
- -gcnewcapacity 新生代(new)的空间大小统计
列 |
描述 |
NGCMN |
new generation的最小容量(KB). |
NGCMX |
new generation的最大容量(KB). |
NGC |
new generation的当前容量(KB). |
S0CMX |
survivor space 0的最大容量(KB). |
S0C |
survivor space 0的当前容量(KB). |
S1CMX |
survivor space 1的最大容量(KB). |
S1C |
survivor space 1的当前容量(KB). |
ECMX |
Eden space的最小容量(KB). |
EC |
Eden space的当前容量(KB). |
YGC |
Young generation的GC事件数 |
FGC |
Full GC事件的数量 |
- -gcold Old和Permanent Generation的统计信息
列 |
描述 |
PC |
permanent space的当前容量(KB). |
PU |
Permanent space的已用容量(KB). |
OC |
old space的当前容量(KB). |
OU |
old space的已用容量(KB). |
YGC |
young generation的GC事件数 |
FGC |
Full GC事件的数量 |
FGCT |
Full GC的时间 |
GCT |
总计的垃圾回收时间 |
- -gcoldcapacity Old Generation的统计信息
列 |
描述 |
OGCMN |
old generation的最小容量(KB). |
OGCMX |
old generation的最大容量(KB). |
OGC |
old generation的当前容量(KB). |
OC |
old space的当前容量(KB). |
YGC |
young generation的GC事件数 |
FGC |
Full GC事件的数量 |
FGCT |
Full GC的时间 |
GCT |
总计的垃圾回收时间 |
- -gcpermcapacity Permanent Generation的统计信息
列 |
描述 |
PGCMN |
permanent generation的最小容量(KB). |
PGCMX |
permanent generation的最大容量(KB). |
PGC |
permanent generation的当前容量(KB). |
PC |
permanent space的当前容量(KB). |
YGC |
young generation的GC事件数 |
FGC |
Full GC 事件的数量 |
FGCT |
Full GC的时间 |
GCT |
总计的垃圾回收时间 |
- -compiler HotSpot即时(Just-In-Time)编译器的统计信息
列 |
描述 |
Compiled |
已执行的编译任务数 |
Failed |
失败的编译任务数 |
Invalid |
无效的编译任务数 |
Time |
执行编译任务所耗费的时间 |
FailedType |
最后失败的编译的编译类型 |
FailedMethod |
最后失败的编译的类名和方法 |
- -printcompilation HotSpot编译器方法统计
列 |
描述 |
Compiled |
已执行的编译任务数 |
Size |
方法字节码的字节数 |
Type |
编译类型 |
Method |
表示被编译方法的类名和方法名。类名使用"/"替代"."作为命名空间的分隔符。方法名是给定的类的方法。这两个字段的格式与HotSpot选项- XX:+PrintComplation是一致的。 |