jvm常用命令工具之jstat
2019-08-23 13:29:52 阿炯
Jstat(JVM Statistics Monitoring Tool)用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,是用于监控虚拟机各种运行状态信息的命令行工具。可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据,在没有 GUI 图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。其位于 java 的 bin 目录下,主要利用 JVM 内建的指令对 Java 应用程序的资源和性能进行实时的命令行的监控,包括了对 Heap size 和垃圾回收状况的监控。Jstat 是轻量级的、专门针对 JVM 的工具,非常适用。使用jstat可以对指定的JVM做如下监控:
- 类的加载及卸载情况
- 查看新生代、老生代及持久代的容量及使用情况
- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间
- 查看新生代中Eden区及Survior区中容量及分配情况等
命令格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数解释:
Option — 选项一般使用 -gcutil 查看 gc 情况 vmid — VM 的进程号,即当前运行的 java 进程号 interval– 间隔时间,单位为秒或者毫秒 count — 打印次数,如果缺省则打印无数次 参数 interval 和 count 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每 250 毫秒查询一次进程 3828 垃圾收集状况,一共查询 5 次,那命令行如下:
jstat -gc 3828 250 5
对于命令格式中的 VMID 与 LVMID 需要特别说明下:如果是本地虚拟机进程,VMID(Virtual Machine IDentifier, 虚机标识符) 和 LVMID(Local Virtual Machine IDentifier, 虚机标识符) 是一致的,如果是远程虚拟机进程,那 VMID 的格式应当是:[protocol:][//] lvmid [@hostname[:port]/servername]
Option
选项(option)代表这用户希望查询的虚拟机信息,主要分为 3 类:类装载、垃圾收集和运行期编译状况,具体选项及作用如下:
–class 监视类装载、卸载数量、总空间及类装载所耗费的时间
–gc 监视 Java 堆状况,包括 Eden 区、2 个 Survivor 区、老年代、永久代等的容量
–gccapacity 监视内容与 - gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大和最小空间
–gcutil 监视内容与 - gc 基本相同,但输出主要关注已使用空间占总空间的百分比
–gccause 与 - gcutil 功能一样,但是会额外输出导致上一次 GC 产生的原因
–gcnew 监视新生代 GC 的状况
–gcnewcapacity 监视内容与 -gcnew 基本相同,输出主要关注使用到的最大和最小空间
–gcold 监视老年代 GC 的状况
–gcoldcapacity 监视内容与 -gcold 基本相同,输出主要关注使用到的最大和最小空间
–gcpermcapacity 输出永久代使用到的最大和最小空间
–compiler 输出 JIT 编译器编译过的方法、耗时等信息
–printcompilation 输出已经被 JIT 编译的方法
jstat工具强大,它有众多的可选项,通过提供多种不同的监控维度,可以从不同的维度来了解到当前JVM堆的使用情况。详细查看堆内各个部分的使用量,使用的时候必须加上待统计的Java进程号,可选的不同维度参数以及可选的统计频率参数。它比jmap工具轻量许多,它主要是用来显示GC及PermGen相关的信息,监控的内容有类加载、运行时编译及GC。使用时需加上查看进程的进程id和所选参数,以下详细介绍各个参数的意义。
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
jstat -gcnew pid:new对象的信息。
jstat -gcnewcapacity pid:new对象的信息及其占用量。
jstat -gcold pid:old对象的信息。
jstat -gcoldcapacity pid:old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -util pid:统计gc信息统计。
jstat -printcompilation pid:当前VM执行的信息。
除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。
示例
jstat -gcutil pid 1000 20
输出参数的含义:
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:用于垃圾回收的总时间(单位秒)
语法
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
generalOption - 单个的常用的命令行选项,如-help, -options, 或 -version。
outputOptions -一个或多个输出选项,由单个的statOption选项组成,可以和-t, -h, and -J等选项配合使用。
statOption:根据jstat统计的维度不同,可以使用如下表中的选项进行不同维度的统计,不同的操作系统支持的选项可能会不一样,可以通过-options选项,查看不同操作系统所支持选项,如:
-h n
用于指定每隔几行就输出列头,如果不指定,默认是只在第一行出现列头。
-JjavaOption
用于将给定的javaOption传给java应用程序加载器,例如,“-J-Xms48m”将把启动内存设置为48M。如果想查看可以传递哪些选项到应用程序加载器中,可以相看如下的文档:
-t n
用于在输出内容的第一列显示时间戳,这个时间戳代表的是JVM开始启动到现在的时间(注:在IBM JDK5中是没有这个选项的)。
vmid - VM的进程号,即当前运行的java进程号。
还有两个关于显示频率的选项:
interval–间隔时间,单位可以是秒或者毫秒,通过指定s或ms确定,默认单位为毫秒。
count-打印次数,如果缺省则打印无数次。
不同的统计维度(statOption)及输出说明
-class
-compiler
-gc
-gccapacity
-gccause
这个选项用于查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因,它比-gcutil会多出最后一次垃圾收集原因以及当前正在发生的垃圾收集的原因。
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
从应用程序启动到采样时发生 Full GC 的次数
-gcutil
-printcompilation
常见用法及解释
1、jstat –class<pid> : 显示加载 class 的数量,及所占空间等信息
Loaded 装载的类的数量 Bytes 装载类所占用的字节数 Unloaded 卸载类的数量 Bytes 卸载类的字节数 Time 装载和卸载类所花费的时间。
2、jstat -compiler <pid> 显示 VM 实时编译的数量等信息
Compiled 编译任务执行数量 Failed 编译任务执行失败数量 Invalid 编译任务执行失效数量 Time 编译任务消耗时间 FailedType 最后一个编译失败任务的类型 FailedMethod 最后一个编译失败任务所在的类及方法。
3、jstat -gc <pid>: 可以显示 gc 的信息,查看 gc 的次数,及时间
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)。
4、jstat -gccapacity <pid>: 可以显示,VM 内存中三代(young,old,perm)对象的使用和占用大小
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 次数。
5、jstat -gcutil <pid>: 统计 gc 信息
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)。
6、jstat -gcnew <pid>: 年轻代对象的信息
S0C 年轻代中第一个 survivor(幸存区)的容量 (字节) S1C 年轻代中第二个 survivor(幸存区)的容量 (字节) S0U 年轻代中第一个 survivor(幸存区)目前已使用空间 (字节) S1U 年轻代中第二个 survivor(幸存区)目前已使用空间 (字节) TT 持有次数限制 MTT 最大持有次数限制 EC 年轻代中 Eden(伊甸园)的容量 (字节) EU 年轻代中 Eden(伊甸园)目前已使用空间 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 YGCT 从应用程序启动到采样时年轻代中 gc 所用时间 (s)。
7、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 次数。
8、jstat -gcold <pid>:old 代对象的信息
PC Perm (持久代) 的容量 (字节) PU Perm (持久代) 目前已使用空间 (字节) OC Old 代的容量 (字节) OU Old 代目前已使用空间 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 FGC 从应用程序启动到采样时 old 代 (全 gc) gc 次数 FGCT 从应用程序启动到采样时 old 代 (全 gc) gc 所用时间 (s) GCT 从应用程序启动到采样时 gc 用的总时间 (s)。
9、stat -gcoldcapacity <pid>: old 代对象的信息及其占用量
OGCMN old 代中初始化 (最小) 的大小 (字节) OGCMX old 代的最大容量 (字节) OGC old 代当前新生成的容量 (字节) OC Old 代的容量 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 FGC 从应用程序启动到采样时 old 代 (全 gc) gc 次数 FGCT 从应用程序启动到采样时 old 代 (全 gc) gc 所用时间 (s) GCT 从应用程序启动到采样时 gc 用的总时间 (s)。
10、jstat -gcpermcapacity<pid>: perm 对象的信息及其占用量
PGCMN perm 代中初始化 (最小) 的大小 (字节) PGCMX perm 代的最大容量 (字节) PGC perm 代当前新生成的容量 (字节) PC Perm (持久代) 的容量 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 FGC 从应用程序启动到采样时 old 代 (全 gc) gc 次数 FGCT 从应用程序启动到采样时 old 代 (全 gc) gc 所用时间 (s) GCT 从应用程序启动到采样时 gc 用的总时间 (s)。
11、jstat -printcompilation <pid>:当前 VM 执行的信息
Compiled 编译任务的数目 Size 方法生成的字节码的大小 Type 编译类型 Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由 - XX:+PrintComplation 选项进行设置的。
参考来源
盘点一些java性能监控及工具
- 类的加载及卸载情况
- 查看新生代、老生代及持久代的容量及使用情况
- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间
- 查看新生代中Eden区及Survior区中容量及分配情况等
命令格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数解释:
Option — 选项一般使用 -gcutil 查看 gc 情况 vmid — VM 的进程号,即当前运行的 java 进程号 interval– 间隔时间,单位为秒或者毫秒 count — 打印次数,如果缺省则打印无数次 参数 interval 和 count 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每 250 毫秒查询一次进程 3828 垃圾收集状况,一共查询 5 次,那命令行如下:
jstat -gc 3828 250 5
对于命令格式中的 VMID 与 LVMID 需要特别说明下:如果是本地虚拟机进程,VMID(Virtual Machine IDentifier, 虚机标识符) 和 LVMID(Local Virtual Machine IDentifier, 虚机标识符) 是一致的,如果是远程虚拟机进程,那 VMID 的格式应当是:[protocol:][//] lvmid [@hostname[:port]/servername]
Option
选项(option)代表这用户希望查询的虚拟机信息,主要分为 3 类:类装载、垃圾收集和运行期编译状况,具体选项及作用如下:
–class 监视类装载、卸载数量、总空间及类装载所耗费的时间
–gc 监视 Java 堆状况,包括 Eden 区、2 个 Survivor 区、老年代、永久代等的容量
–gccapacity 监视内容与 - gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大和最小空间
–gcutil 监视内容与 - gc 基本相同,但输出主要关注已使用空间占总空间的百分比
–gccause 与 - gcutil 功能一样,但是会额外输出导致上一次 GC 产生的原因
–gcnew 监视新生代 GC 的状况
–gcnewcapacity 监视内容与 -gcnew 基本相同,输出主要关注使用到的最大和最小空间
–gcold 监视老年代 GC 的状况
–gcoldcapacity 监视内容与 -gcold 基本相同,输出主要关注使用到的最大和最小空间
–gcpermcapacity 输出永久代使用到的最大和最小空间
–compiler 输出 JIT 编译器编译过的方法、耗时等信息
–printcompilation 输出已经被 JIT 编译的方法
jstat工具强大,它有众多的可选项,通过提供多种不同的监控维度,可以从不同的维度来了解到当前JVM堆的使用情况。详细查看堆内各个部分的使用量,使用的时候必须加上待统计的Java进程号,可选的不同维度参数以及可选的统计频率参数。它比jmap工具轻量许多,它主要是用来显示GC及PermGen相关的信息,监控的内容有类加载、运行时编译及GC。使用时需加上查看进程的进程id和所选参数,以下详细介绍各个参数的意义。
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
jstat -gcnew pid:new对象的信息。
jstat -gcnewcapacity pid:new对象的信息及其占用量。
jstat -gcold pid:old对象的信息。
jstat -gcoldcapacity pid:old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -util pid:统计gc信息统计。
jstat -printcompilation pid:当前VM执行的信息。
除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。
示例
jstat -gcutil pid 1000 20
输出参数的含义:
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:用于垃圾回收的总时间(单位秒)
语法
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
generalOption - 单个的常用的命令行选项,如-help, -options, 或 -version。
outputOptions -一个或多个输出选项,由单个的statOption选项组成,可以和-t, -h, and -J等选项配合使用。
statOption:根据jstat统计的维度不同,可以使用如下表中的选项进行不同维度的统计,不同的操作系统支持的选项可能会不一样,可以通过-options选项,查看不同操作系统所支持选项,如:
-h n
用于指定每隔几行就输出列头,如果不指定,默认是只在第一行出现列头。
-JjavaOption
用于将给定的javaOption传给java应用程序加载器,例如,“-J-Xms48m”将把启动内存设置为48M。如果想查看可以传递哪些选项到应用程序加载器中,可以相看如下的文档:
-t n
用于在输出内容的第一列显示时间戳,这个时间戳代表的是JVM开始启动到现在的时间(注:在IBM JDK5中是没有这个选项的)。
vmid - VM的进程号,即当前运行的java进程号。
还有两个关于显示频率的选项:
interval–间隔时间,单位可以是秒或者毫秒,通过指定s或ms确定,默认单位为毫秒。
count-打印次数,如果缺省则打印无数次。
不同的统计维度(statOption)及输出说明
-class
-compiler
-gc
-gccapacity
-gccause
这个选项用于查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因,它比-gcutil会多出最后一次垃圾收集原因以及当前正在发生的垃圾收集的原因。
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
从应用程序启动到采样时发生 Full GC 的次数
-gcutil
-printcompilation
常见用法及解释
1、jstat –class<pid> : 显示加载 class 的数量,及所占空间等信息
Loaded 装载的类的数量 Bytes 装载类所占用的字节数 Unloaded 卸载类的数量 Bytes 卸载类的字节数 Time 装载和卸载类所花费的时间。
2、jstat -compiler <pid> 显示 VM 实时编译的数量等信息
Compiled 编译任务执行数量 Failed 编译任务执行失败数量 Invalid 编译任务执行失效数量 Time 编译任务消耗时间 FailedType 最后一个编译失败任务的类型 FailedMethod 最后一个编译失败任务所在的类及方法。
3、jstat -gc <pid>: 可以显示 gc 的信息,查看 gc 的次数,及时间
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)。
4、jstat -gccapacity <pid>: 可以显示,VM 内存中三代(young,old,perm)对象的使用和占用大小
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 次数。
5、jstat -gcutil <pid>: 统计 gc 信息
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)。
6、jstat -gcnew <pid>: 年轻代对象的信息
S0C 年轻代中第一个 survivor(幸存区)的容量 (字节) S1C 年轻代中第二个 survivor(幸存区)的容量 (字节) S0U 年轻代中第一个 survivor(幸存区)目前已使用空间 (字节) S1U 年轻代中第二个 survivor(幸存区)目前已使用空间 (字节) TT 持有次数限制 MTT 最大持有次数限制 EC 年轻代中 Eden(伊甸园)的容量 (字节) EU 年轻代中 Eden(伊甸园)目前已使用空间 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 YGCT 从应用程序启动到采样时年轻代中 gc 所用时间 (s)。
7、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 次数。
8、jstat -gcold <pid>:old 代对象的信息
PC Perm (持久代) 的容量 (字节) PU Perm (持久代) 目前已使用空间 (字节) OC Old 代的容量 (字节) OU Old 代目前已使用空间 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 FGC 从应用程序启动到采样时 old 代 (全 gc) gc 次数 FGCT 从应用程序启动到采样时 old 代 (全 gc) gc 所用时间 (s) GCT 从应用程序启动到采样时 gc 用的总时间 (s)。
9、stat -gcoldcapacity <pid>: old 代对象的信息及其占用量
OGCMN old 代中初始化 (最小) 的大小 (字节) OGCMX old 代的最大容量 (字节) OGC old 代当前新生成的容量 (字节) OC Old 代的容量 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 FGC 从应用程序启动到采样时 old 代 (全 gc) gc 次数 FGCT 从应用程序启动到采样时 old 代 (全 gc) gc 所用时间 (s) GCT 从应用程序启动到采样时 gc 用的总时间 (s)。
10、jstat -gcpermcapacity<pid>: perm 对象的信息及其占用量
PGCMN perm 代中初始化 (最小) 的大小 (字节) PGCMX perm 代的最大容量 (字节) PGC perm 代当前新生成的容量 (字节) PC Perm (持久代) 的容量 (字节) YGC 从应用程序启动到采样时年轻代中 gc 次数 FGC 从应用程序启动到采样时 old 代 (全 gc) gc 次数 FGCT 从应用程序启动到采样时 old 代 (全 gc) gc 所用时间 (s) GCT 从应用程序启动到采样时 gc 用的总时间 (s)。
11、jstat -printcompilation <pid>:当前 VM 执行的信息
Compiled 编译任务的数目 Size 方法生成的字节码的大小 Type 编译类型 Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由 - XX:+PrintComplation 选项进行设置的。
参考来源
盘点一些java性能监控及工具