jstat是一个用来监控虚拟机资源和性能的命令行工具。 可以展示本机或者远程虚拟机进程中的类装载、内存、垃圾回收、JIT编译等运行数据,是常见的线上jvm问题排查的工具,非常实用。
命令格式:
|
jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
|
参数解释:
option:选项,最经常使用的是gcutil
vmid:vm进程号,也就是java进程PID
interval: 时间间隔,单位秒或者毫秒 ,默认是毫秒,必须是正数。
count : 统计次数,默认是一直打印。
如果interval和count同时缺少,则默认为只查询一次。
eg:
jstat -gcutil 1234 1000 10
表示查看进程PID为1234的GC情况,一共打印10次,每次间隔1s(1000ms)
使用介绍:
|
jstat -help
显示jstat的使用帮助,详细的使用帮助也可以通过man jstat来查看
|
|
jstat -options
列出当前JVM版本支持的选项,eg:
image|
|
jstat -class <pid>
类加载器的行为统计
eg:
imageLoaded:装载类的数量
Bytes:装载类的字节数(KB)
Unloaded:卸载类的数量
Bytes:卸载类的字节数(KB)
Time:类装载和卸载所花费的时间
|
|
**jstat -compiler <pid> **
JIT编译器的行为统计
eg:
imageCompiled:编译任务的执行数量
Failed:编译任务执行失败数量
Invalid:编译任务执行无效的数量
Time:编译任务执行耗时
FailedType:最后一个编译失败任务的类型
FailedMethod:最后一个编译失败任务所在的类和方法
|
|
jstat -gc <pid>
堆上垃圾回收的行为统计,可以显示gc的信息,查看gc的次数及时间。
eg:
imageS0C: 第一个survivor区的容量(单位是KB)
S1C:第二个survivor区的容量(单位是KB)
S0U:第一个survivor区使用的空间(单位KB)
S1U: 第二个survivor区使用的空间(单位KB)
EC:年轻代中Eden区的容量(KB)
EU:年轻代中Eden区使用的空间(单位KB)
OC:Old代(年老代)的容量(单位KB)
OU:Old代(年老代)使用的空间(单位KB)
PC:Perm(持久代)的容量(KB)
PU:Perm(持久代)使用的空间(KB)
YGC: 从程序启动到采样时年轻代GC的次数(Young GC次数)
YGCT:从程序启动到采样时年轻代GC所用的时间(单位s)
FGC:从程序启动到采样时old代GC(FullGC)的次数,准确的说是产生非YGC产生的STW的次数。
表示非YGC的GC时STW的次数,所以如果发生了CMS GC,这个值+2,如果是Parallel Old GC,则+1,如果是full gc,也是+1 , 此参数的含义在CMS引入之后定义比较模糊。 FGC>0不一定是产生了FullGC。有可能是CMS GC
FGCT:从程序启动到采样时old代GC(FullGC)所用的时间(s)
GCT:从程序启动到采样时GC所用的时间
|
|
**jstat -gccapacity <pid> **
vm上各代容量和空间的统计, 可以显示各代的容量和占用大小
eg:
imageNGCMN:年轻代(young)中初始化(最小)容量大小(单位KB)
NGCMX:年轻代(young)最大容量大小(单位KB)
NGC:年轻代(young)当前容量大小(单位KB)
S0C:年轻代第一个Survivor区容量(单位KB)
S1C:年轻代第二个Survivor区容量(单位KB)
EC:年轻代Eden区容量(单位KB)
OGCMN:年老代(old)中初始化容量大小(单位KB)
OGCMX:年老代(old)中最大容量大小(单位KB)
OGC:年老代(old)当前容量大小(单位KB)
OC:年老代(old)当前容量大小(单位KB)
PGCMN:永久代(perm)初始化容量大小(单位KB)
PGCMX:永久代(perm)最大容量大小(单位KB)
PGC:当前永久代(perm)容量大小(单位KB)
PC:当前永久代(perm)容量大小(单位KB)
YGC:年轻代(young)GC次数
FGC:年老代(old)GC及Full GC次数(实际为非YGC产生的STW次数)
|
|
jstat -gcutil <pid>
GC情况统计,可以查看GC情况,最常用的一个功能
eg:
imageS0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E 年轻代中Eden(伊甸园)已使用的占当前容量百分比
O old代已使用的占当前容量百分比
P perm代已使用的占当前容量百分比
YGC 从应用程序启动到采样时年轻代中gc次数
YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)
FGC 从应用程序启动到采样时old代(全gc)gc次数 (实际为非YGC产生的STW次数)
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
|
|
jstat -gcnew <pid>:
年轻代对象的信息。
imageS0C 年轻代中第一个survivor(幸存区)的容量 (单位KB)
S1C 年轻代中第二个survivor(幸存区)的容量 (单位KB)
S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (单位KB)
S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (单位KB)
TT 持有次数限制 ,晋升(存活)年龄阀值,
MTT 最大持有次数限制 ,最大的存活年龄阀值
EC 年轻代中Eden(伊甸园)的容量 (单位KB)
EU 年轻代中Eden(伊甸园)目前已使用空间 (单位KB)
YGC 从应用程序启动到采样时年轻代中gc次数
YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)
|
|
jstat -gcnewcapacity <pid>: 年轻代对象的信息及其占用量。
NGCMN 年轻代(young)中初始化(最小)的大小(KB)
NGCMX 年轻代(young)的最大容量 (KB)
NGC 年轻代(young)中当前的容量 (KB)
S0CMX 年轻代中第一个survivor(幸存区)的最大容量 (KB)
S0C 年轻代中第一个survivor(幸存区)的容量 (KB)
S1CMX 年轻代中第二个survivor(幸存区)的最大容量 (KB)
S1C 年轻代中第二个survivor(幸存区)的容量 (KB)
ECMX 年轻代中Eden(伊甸园)的最大容量 (KB)
EC 年轻代中Eden(伊甸园)的容量 (KB)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
|
|
jstat -gcold <pid>:old代对象的信息。
PC Perm(持久代)的容量 (KB)
PU Perm(持久代)目前已使用空间 (KB)
OC Old代的容量 (KB)
OU Old代目前已使用空间 (KB)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
|
|
jstat -gcoldcapacity <pid>: old代对象的信息及其占用量。
OGCMN old代中初始化(最小)的大小 (KB)
OGCMX old代的最大容量(KB)
OGC old代当前新生成的容量 (KB)
OC Old代的容量 (KB)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
|
|
jstat -gcpermcapacity <pid>: perm对象的信息及其占用量。
PGCMN perm代中初始化(最小)的大小 (KB)
PGCMX perm代的最大容量 (KB)
PGC perm代当前新生成的容量 (KB)
PC Perm(持久代)的容量 (KB)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
|
|
jstat -printcompilation <pid>:当前VM执行的信息。
Compiled 编译任务的数目
Size 方法生成的KB码的大小
Type 编译类型
Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的
|
image
网友评论