Java命令-jstat使用

losetowin 发布于:2017-10-23 19:27 分类:Java  有 1075 人浏览,获得评论 0 条 标签: jstat 

本文地址:http://www.dutycode.com/java_jstat_gcutil_shiyong.html
除非注明,文章均为 www.dutycode.com 原创,欢迎转载!转载请注明本文地址,谢谢。
介绍:
     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:
WX20171023-193216.png
jstat -class <pid>
类加载器的行为统计
eg:
WX20171023-193240.png
Loaded:装载类的数量
Bytes:装载类的字节数(KB)
Unloaded:卸载类的数量
Bytes:卸载类的字节数(KB)
Time:类装载和卸载所花费的时间
jstat -compiler <pid> 
JIT编译器的行为统计
eg:
WX20171023-193256.png
Compiled:编译任务的执行数量
Failed:编译任务执行失败数量
Invalid:编译任务执行无效的数量
Time:编译任务执行耗时
FailedType:最后一个编译失败任务的类型
FailedMethod:最后一个编译失败任务所在的类和方法
jstat -gc <pid>

堆上垃圾回收的行为统计,可以显示gc的信息,查看gc的次数及时间。

eg:

WX20171023-193318.png

S0C: 第一个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的次数。
     表示非YGCGCSTW的次数所以如果发生了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:
WX20171023-193333.png
NGCMN:年轻代(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:
WX20171023-193348.png
S0 年轻代中第一个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>:

年轻代对象的信息。

WX20171023-193402.png

S0C 年轻代中第一个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选项进行设置的

版权所有:《攀爬蜗牛》 => 《Java命令-jstat使用
本文地址:https://www.dutycode.com/java_jstat_gcutil_shiyong.html
除非注明,文章均为 《攀爬蜗牛》 原创,欢迎转载!转载请注明本文地址,谢谢。