本文主要是介绍jvm监控之jstat,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
jstat
用来获取运行中的jvm进程的实时内存使用情况,性能统计信息,可以很直观的查看到jvm各个分区的内存现状,是监控jvm的常用命令。
常用指令:
#查看gc容量jstat -gccapacity pid 1000 10#查看gcjstat -gc pid 1000 2#查看各空间利用率
jstat -gcutil pid 1000 2#查看元空间容量
jstat -gcmetacapacity pid
使用方法
jstat [ generalOption | outputOptions vmid [ interval [s | ms] [ count ]]
generalOption
单个通用命令行选项-help或-options。
outputOptions
一个或由单个的多输出选项statOption
,加上任何的-t
,-h
和-J
选项。即:-statOption -t -h n -J
-t:打印列表第一列添加时间戳,时间戳的值是从指定进程开始时间起算的
-h n:每隔n次采样,输出一次表头
-J javaOption:指定jstat命令的java指令
-statOption stat输出指令,包括:
class:显示有关类加载器行为的统计信息。compiler:显示有关Java HotSpot VM实时编译器行为的统计信息。gc:显示有关垃圾回收堆行为的统计信息。gccapacity:显示有关代的容量及其相应空间的统计信息。gccause:显示有关垃圾收集统计信息(-gcutil与之相同)的摘要,以及最后一个和当前(适用时)垃圾收集事件的原因。gcnew:显示新生代行为的统计信息。gcnewcapacity:显示有关新生代及其相应空间大小的统计信息。gcold:显示有关老年代和元空间统计信息行为的统计信息。gcoldcapacity:显示有关老年代大小的统计信息。gcmetacapacity:显示有关元空间大小的统计信息。gcutil:显示有关垃圾回收统计信息的摘要。printcompilation:显示Java HotSpot VM编译方法统计信息。
每一个statOption的统计信息:
1. -class 类加载器统计信息
- Loaded:加载的类数。
- Bytes:加载的kB数。
- Unloaded:卸载的类数。
- Bytes:卸载的Kbytes数。
- Time:执行类加载和卸载操作所花费的时间。
2. -compiler Java HotSpot VM即时编译器统计信息。
- Compiled:执行的编译任务数。
- Failed:编译任务失败次数。
- Invalid:已失效的编译任务数。
- Time:执行编译任务所花费的时间。
- FailedType:编译上次失败编译的类型。
- FailedMethod:上次失败编译的类名和方法。
3.-gc 垃圾收集堆统计信息。
- S0C:当前幸存者空间0容量(kB)。
- S1C:当前幸存者空间1容量(kB)。
- S0U:幸存者空间0利用率(kB)。
- S1U:幸存者空间1利用率(kB)。
- EC:当前的伊甸园空间容量(kB)。
- EU:伊甸园空间利用率(kB)。
- OC:当前旧空间容量(kB)。
- OU:旧空间利用率(kB)。
- MC:元空间容量(kB)。
- MU:Metacspace利用率(kB)。
- CCSC:压缩类空间容量(kB)。
- CCSU:使用的压缩类空间(kB)。
- YGC:新生代垃圾收集活动的数量。
- YGCT:新生代垃圾收集时间。
- FGC:完整GC事件的数量。
- FGCT:完全垃圾收集时间。
- GCT:垃圾收集总时间。
4.-gccapacity 内存池生成和空间容量。
- NGCMN:最小新生代容量(kB)。
- NGCMX:最大新生代容量(kB)。
- NGC:当前的新生容量(kB)。
- S0C:当前幸存者空间0容量(kB)。
- S1C:当前幸存者空间1容量(kB)。
- EC:当前的伊甸园空间容量(kB)。
- OGCMN:最小老年代容量(kB)。
- OGCMX:最大老年代容量(kB)。
- OGC:当前的老年代容量(kB)。
- OC:当前老年代空间容量(kB)。
- MCMN:最小元空间容量(kB)。
- MCMX:最大元空间容量(kB)。
- MC:元空间容量(kB)。
- CCSMN:压缩类空间最小容量(kB)。
- CCSMX:压缩类空间最大容量(kB)。
- CCSC:压缩类空间容量(kB)。
- YGC:新生代GC事件的数量。
- FGC:完整GC事件的数量。
5.-gcutil 垃圾收集统计摘要。
- S0:幸存者空间0利用率占空间当前容量的百分比。
- S1:幸存者空间1占空间当前容量的百分比。
- E:伊甸园空间利用率占空间当前容量的百分比。
- O:老年代空间利用率占空间当前容量的百分比。
- M:元空间利用率占空间当前容量的百分比。
- CCS:压缩的类空间利用率百分比。
- YGC:新生代GC事件的数量。
- YGCT:新生代垃圾收集时间。
- FGC:完整GC事件的数量。
- FGCT:完全垃圾收集时间。
- GCT:垃圾收集总时间。
6.-gccause 与-gcutil相同的垃圾收集统计信息摘要,但包括上次垃圾收集事件的原因以及(如果适用)当前垃圾收集事件的原因。除了列出-gcutil的列之外,此选项还添加以下列。
- LGCC:上次垃圾回收的原因
- GCC:当前垃圾回收的原因
7.-gcnew 新生代统计数据。
- S0C:当前幸存者空间0容量(kB)。
- S1C:当前幸存者空间1容量(kB)。
- S0U:幸存者空间0利用率(kB)。
- S1U:幸存者空间1利用率(kB)。
- TT:Tenuring threshold 晋升阈值。
- MTT:Maximum tenuring threshold最大晋升阈值。
- DSS:期望的幸存者大小(kB)。
- EC:当前的伊甸园空间容量(kB)。
- EU:伊甸园空间利用率(kB)。
- YGC:新生代GC事件的数量。
- YGCT:新生代垃圾收集时间。
8. -gcnewcapacity 新生代空间大小统计。
- NGCMN:最小新生代容量(kB)。
- NGCMX:最大新生代容量(kB)。
- NGC:当前的新生代容量(kB)。
- S0CMX:最大幸存者空间0容量(kB)。
- S0C:当前幸存者空间0容量(kB)。
- S1CMX:最大幸存者空间1容量(kB)。
- S1C:当前幸存者空间1容量(kB)。
- ECMX:最大伊甸园空间容量(kB)。
- EC:当前的伊甸园空间容量(kB)。
- YGC:年轻一代GC事件的数量。
- FGC:完整GC事件的数量。
9.-gcold 老年代和元空间行为统计。
- MC:元空间容量(kB)。
- MU:元空间利用率(kB)。
- CCSC:压缩类空间容量(kB)。
- CCSU:使用的压缩类空间(kB)。
- OC:当前老年代空间容量(kB)。
- OU:老年代空间利用率(kB)。
- YGC:年轻代GC事件的数量。
- FGC:完整GC事件的数量。
- FGCT:完全垃圾收集时间。
- GCT:垃圾收集总时间。
10.-gcoldcapacity 老年代大小统计
- OGCMN:最小旧代容量(kB)。
- OGCMX:最大旧代容量(kB)。
- OGC:当前的旧代容量(kB)。
- OC:当前旧空间容量(kB)。
- YGC:新生代GC事件的数量。
- FGC:完整GC事件的数量。
- FGCT:完全垃圾收集时间。
- GCT:垃圾收集总时间。
11. -gcmetacapacity 元空间大小统计。
- MCMN:最小元空间容量(kB)。
- MCMX:最大元空间容量(kB)。
- MC:元空间容量(kB)。
- CCSMN:压缩类空间最小容量(kB)。
- CCSMX:压缩类空间最大容量(kB)。
- YGC:新生代GC事件的数量。
- FGC:完整GC事件的数量。
- FGCT:完全垃圾收集时间。
- GCT:垃圾收集总时间。
12.-printcompilation Java HotSpot VM编译方法统计。
- Compiled:最近编译的方法执行的编译任务数。
- Size:最近编译的方法的字节代码的字节数。
- Type:最近编译的方法的编译类型。
- Method:标识最近编译的方法的类名和方法名。类名使用斜杠(/)代替点(。)作为名称空间分隔符。方法名称是指定类中的方法。这两个字段的格式与HotSpot -XX:+PrintCompilation选项一致。
VMID(Virtual Machine Identifier)
指向目标JVM的虚拟机标识符。一般语法对应于URI的语法如下:
[protocol:][//]lvmid[@hostname[:port]/servername]
- protocol: 通信协议。如果省略协议值并且未指定主机名,则默认协议是特定于平台的优化本地协议。如果省略协议值并指定了主机名,则默认协议为rmi。
- lvmid: 目标JVM的本地虚拟机标识符。即进程id/pid。
- hostname: 指示目标主机的主机名或IP地址。如果省略hostname值,则目标主机是本地主机
- port: 用于与远程服务器通信的默认端口。如果省略hostname值或协议值指定优化的本地协议,则忽略端口值。否则,port参数的处理是特定于实现的。对于默认rmi协议,端口值指示远程主机上rmiregistry的端口号。如果省略端口值并且协议值指示rmi,则使用默认的rmiregistry端口(1099)。
- servername: servername参数的处理取决于实施。对于优化的本地协议,将忽略此字段。对于rmi协议,它表示远程主机上的RMI远程对象的名称。
interval [s|ms]
采样间隔:单位为秒(s)或毫秒(ms),默认单位是毫秒,必须是正整数。指定时,该jstat
命令会在每个间隔生成其输出。
count
统计次数
这篇关于jvm监控之jstat的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!