概述
Jstat 是 JDK 自带的一个轻量级小工具.全称 "Java Virtual Machine statistics monitoring tool",它位于 java 的 bin 目录下,主要利用 JVM 内建的指令对 Java 应用程序的资源和性能进行实时的命令行的监控,包括了对 Heap size 和垃圾回收状况的监控.
jstat 用法
option: 参数选项
-t: 可以在打印的列加上 Timestamp 列,用于显示系统运行的时间
-h: 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
vmid: Virtual Machine ID( 进程的 pid)
interval: 执行每次的间隔时间,单位为毫秒
count: 用于指定输出多少次记录,缺省则会一直打印
option 可以从下面参数中选择
-class 显示 ClassLoad 的相关信息;
-compiler 显示 JIT 编译的相关信息;
-gc 显示和 gc 相关的堆信息;
-gccapacity 显示各个代的容量以及使用情况;
-gcmetacapacity 显示 metaspace 的大小
-gcnew 显示新生代信息;
-gcnewcapacity 显示新生代大小和使用情况;
-gcold 显示老年代和永久代的信息;
-gcoldcapacity 显示老年代的大小;
-gcutil 显示垃圾收集信息;
-gccause 显示垃圾回收的相关信息(通 - gcutil), 同时显示最后一次或当前正在发生的垃圾回收的诱因;
-printcompilation 输出 JIT 编译的方法信息;
示例一:-class
显示加载 class 的数量,及所占空间等信息.
jstat -class <pid>
Loaded : 已经装载的类的数量
Bytes : 装载类所占用的字节数
Unloaded:已经卸载类的数量
Bytes:卸载类的字节数
Time:装载和卸载类所花费的时间
示例二: -compiler
显示 VM 实时编译 (JIT) 的数量等信息.
jstat -compiler <pid>
Compiled:编译任务执行数量
Failed:编译任务执行失败数量
Invalid :编译任务执行失效数量
Time :编译任务消耗时间
FailedType:最后一个编译失败任务的类型
FailedMethod:最后一个编译失败任务所在的类及方法
示例三: -gc
显示 gc 相关的堆信息,查看 gc 的次数,及时间.
jstat -gc <pid>
S0C:年轻代中第一个 survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个 survivor(幸存区)的容量 (字节)
S0U :年轻代中第一个 survivor(幸存区)目前已使用空间 (字节)
S1U :年轻代中第二个 survivor(幸存区)目前已使用空间 (字节)
EC :年轻代中 Eden(伊甸园)的容量 (字节)
EU :年轻代中 Eden(伊甸园)目前已使用空间 (字节)
OC :Old 代的容量 (字节)
OU :Old 代目前已使用空间 (字节)
PC :Perm(持久代) 的容量 (字节)
PU:Perm(持久代) 目前已使用空间 (字节)
YGC :从应用程序启动到采样时年轻代中 gc 次数
YGCT :从应用程序启动到采样时年轻代中 gc 所用时间 (s)
FGC :从应用程序启动到采样时 old 代 (全 gc)gc 次数
FGCT :从应用程序启动到采样时 old 代 (全 gc)gc 所用时间 (s)
GCT:从应用程序启动到采样时 gc 用的总时间 (s)
示例四: -gccapacity
可以显示,VM 内存中三代(young,old,perm)对象的使用和占用大小
jstat -gccapacity <pid>
NGCMN :年轻代 (young) 中初始化 (最小) 的大小 (字节)
NGCMX :年轻代 (young) 的最大容量 (字节)
NGC :年轻代 (young) 中当前的容量 (字节)
S0C :年轻代中第一个 survivor(幸存区)的容量 (字节)
S1C : 年轻代中第二个 survivor(幸存区)的容量 (字节)
EC :年轻代中 Eden(伊甸园)的容量 (字节)
OGCMN :old 代中初始化 (最小) 的大小 (字节)
OGCMX :old 代的最大容量 (字节)
OGC:old 代当前新生成的容量 (字节)
OC :Old 代的容量 (字节)
PGCMN:perm 代中初始化 (最小) 的大小 (字节)
PGCMX :perm 代的最大容量 (字节)
PGC :perm 代当前新生成的容量 (字节)
PC :Perm(持久代) 的容量 (字节)
YGC :从应用程序启动到采样时年轻代中 gc 次数
FGC:从应用程序启动到采样时 old 代 (全 gc)gc 次数
示例五:-gcmetacapacity
metaspace 中对象的信息及其占用量.
jstat -gcmetacapacity<pid>
MCMN: 最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC :从应用程序启动到采样时年轻代中 gc 次数
FGC :从应用程序启动到采样时 old 代 (全 gc)gc 次数
FGCT :从应用程序启动到采样时 old 代 (全 gc)gc 所用时间 (s)
GCT:从应用程序启动到采样时 gc 用的总时间 (s)
示例六: -gcnew
年轻代对象的信息.
jstat -gcnew <pid>
S0C :年轻代中第一个 survivor(幸存区)的容量 (字节)
S1C :年轻代中第二个 survivor(幸存区)的容量 (字节)
S0U :年轻代中第一个 survivor(幸存区)目前已使用空间 (字节)
S1U :年轻代中第二个 survivor(幸存区)目前已使用空间 (字节)
TT:持有次数限制
MTT:最大持有次数限制
EC:年轻代中 Eden(伊甸园)的容量 (字节)
EU :年轻代中 Eden(伊甸园)目前已使用空间 (字节)
YGC :从应用程序启动到采样时年轻代中 gc 次数
YGCT:从应用程序启动到采样时年轻代中 gc 所用时间 (s)
示例七: -gcnewcapacity
年轻代对象的信息及其占用量
jstat -gcnewcapacity <pid>
NGCMN :年轻代 (young) 中初始化 (最小) 的大小 (字节)
NGCMX :年轻代 (young) 的最大容量 (字节)
NGC :年轻代 (young) 中当前的容量 (字节)
S0CMX :年轻代中第一个 survivor(幸存区)的最大容量 (字节)
S0C :年轻代中第一个 survivor(幸存区)的容量 (字节)
S1CMX :年轻代中第二个 survivor(幸存区)的最大容量 (字节)
S1C:年轻代中第二个 survivor(幸存区)的容量 (字节)
ECMX:年轻代中 Eden(伊甸园)的最大容量 (字节)
EC:年轻代中 Eden(伊甸园)的容量 (字节)
YGC:从应用程序启动到采样时年轻代中 gc 次数
FGC:从应用程序启动到采样时 old 代 (全 gc)gc 次数
示例八: -gcold
old 代对象的信息
jstat -gcold <pid>
PC:Perm(持久代) 的容量 (字节)
PU:Perm(持久代) 目前已使用空间 (字节)
OC:Old 代的容量 (字节)
OU:Old 代目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中 gc 次数
FGC:从应用程序启动到采样时 old 代 (全 gc)gc 次数
FGCT:从应用程序启动到采样时 old 代 (全 gc)gc 所用时间 (s)
GCT:从应用程序启动到采样时 gc 用的总时间 (s)
示例九:-gcoldcapacity
old 代对象的信息及其占用量
jstat -gcoldcapacity <pid>
OGCMN :old 代中初始化 (最小) 的大小 (字节)
OGCMX :old 代的最大容量 (字节)
OGC :old 代当前新生成的容量 (字节)
OC :Old 代的容量 (字节)
YGC :从应用程序启动到采样时年轻代中 gc 次数
FGC :从应用程序启动到采样时 old 代 (全 gc)gc 次数
FGCT :从应用程序启动到采样时 old 代 (全 gc)gc 所用时间 (s)
GCT:从应用程序启动到采样时 gc 用的总时间 (s)
示例十: - gcutil
统计 gc 信息
jstat -gcutil <pid>
S0 :年轻代中第一个 survivor(幸存区)已使用的占当前容量百分比
S1 :年轻代中第二个 survivor(幸存区)已使用的占当前容量百分比
E :年轻代中 Eden(伊甸园)已使用的占当前容量百分比
O :old 代已使用的占当前容量百分比
P :perm 代已使用的占当前容量百分比
YGC :从应用程序启动到采样时年轻代中 gc 次数
YGCT :从应用程序启动到采样时年轻代中 gc 所用时间 (s)
FGC :从应用程序启动到采样时 old 代 (全 gc)gc 次数
FGCT :从应用程序启动到采样时 old 代 (全 gc)gc 所用时间 (s)
GCT:从应用程序启动到采样时 gc 用的总时间 (s)
示例十一:-gccause
显示垃圾回收的相关信息(通 - gcutil), 同时显示最后一次或当前正在发生的垃圾回收的诱因.
jstat -gccause <pid>
LGCC:最后一次 GC 原因
GCC:当前 GC 原因(No GC 为当前没有执行 GC)
示例十二: -printcompilation
当前 VM 执行的信息.
jstat -printcompilation <pid>
来源: http://www.jianshu.com/p/213710fb9e40