JVM调优小工具之jstat

本文详细介绍了JVM调优工具jstat的用途、使用方法和多个使用示例,包括查看类加载、内存、垃圾回收和即时编译等关键运行时数据,是进行JVM性能分析的重要工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM调优小工具之jstat

jstat是什么?

jstat(JVM statistics Monitoring Tool)是JDK自带的用于查看虚拟机各种运行状态信息的命令行工具,常用于在运行期定位虚拟机性能问题。它可以显示本地或远程虚拟机中的类加载、内存、垃圾回收、即时编译等运行时数据。

jstat使用方法

命令格式: jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数作用
-t在第一列输出时间戳。时间戳是自目标JVM启动时间以来的时间。
-h n周期性输出数据的时候,每隔n次输出一次表头 ;默认n=0,表示只在第一列输出表头
vmid如果是本地虚拟机进程,则与LVMID一致,可使用jps命令进行查看;
如果是远程虚拟机进程,其格式则为:
[protocol:][//]lvmid[@hostname[:port]/servername]
interval输出间隔
count输出次数 ,不加时会一直输出

options: JDK版本不同,其选项可能会有细微差别。

options作用
-class查看类加载数、卸载数、占用空间、类装载耗费的时间
-compiler查看即时编译过的方法、耗时
-gc查看Java堆各个区的总空间、已用空间、垃圾收集耗费的时间
-gcutil与-gc类似,主要关注各个区空间使用百分比
-gccapacity与-gc类似,但主要关注运行过程中各个区的最大使用空间、最小使用空间
-gccause与-gcutil类似,但会额外输出导致最后一次GC的原因
-gcmetacapacity元空间最大最小空间
-gcnew监视新生代垃圾收集状况
-gcnewcapacity与-gcnew类似,主要关注最大最小空间
-gcold监视老年代垃圾收集情况
-gcoldcapacity与-gcold类似,主要关注最大最小空间
-printcompilation输出已被即时编译的方法
使用示例
  1. jstat -class 11146: 查看类加载信息(先使用jps查询出LVMID)
david@UX501:~$ jps
11175 Jps
11146 Test
david@UX501:~$ jstat -class 11146
Loaded  Bytes  Unloaded  Bytes     Time   
405     833.7  0         0.0       0.03
字段含义
Loaded已加载类的数量
Bytes已加载类的大小
Unloaded已卸载类的数量
Bytes已卸载类的大小
Time执行类加载和卸载操作所花费的总时间
  1. jstat -compiler 11146 : 查看HotSpot VM即时编译统计信息。
david@UX501:~$ jstat -compiler 11146
Compiled  Failed  Invalid   Time   FailedType FailedMethod
90        0       0         0.10   0             
字段含义
Compiled编译成功次数
Failed编译失败次数
Invalid编译无效次数
Time即时编译耗费的时间
FailedType上一次编译失败的编译类型
FailedMethod上一次编译失败的类名和方法名
  1. jstat -gc 11146: 查看GC相关的统计信息
david@UX501:~$ jstat -gc 11146
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU     CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
7680.0 7680.0  0.0    0.0   48640.0  15693.4   128512.0     0.0     4480.0   777.9  384.0   74.5   0      0.000   0      0.000    0.000
字段含义
S0C当前S0容量(kB)
S1C当前S1的容量(kB)
S0US0已用空间(kB)
S1US1已用空间(kB)
ECEden区容量(kB)
EUEden区已用空间(kB)
OC老年代容量(kB)
OU老年代已用空间(kB)
MC元空间容量(kB)
MU元空间已用空间(kB)
CCSC压缩类空间容量(kB)
CCSU已使用的压缩类空间大小(kB)
YGCYGC次数
YGCTYGC耗费总时间
FGCFGC次数
FGCTFGC耗费总时间
GCTGC耗费的时间总和
  1. jstat -gccapacity 11146: 显示各个区的容量及相应空间统计信息
david@UX501:~$ jstat -gccapacity 11146
NGCMN    NGCMX     NGC     S0C    S1C     EC        OGCMN     OGCMX       OGC        OC         MCMN     MCMX        MC       CCSMN    CCSMX       CCSC    YGC    FGC 
64000.0 1018880.0  64000.0 7680.0 7680.0  48640.0   128512.0  2038784.0   128512.0   128512.0   0.0      1056768.0   4480.0   0.0      1048576.0   384.0   0      0
字段含义
NGCMN最小新生代容量 (kB).
NGCMX最大新生代容量 (kB).
NGC当前新生代容量 (kB).
S0C当前S0容量 (kB).
S1C当前S1容量 (kB).
EC当前Eden区容量 (kB).
OGCMN最小老年代容量 (kB).
OGCMX最大老年代容量 (kB).
OGC当前老年代容量 (kB).
OC当前老年代容量 (kB).
MCMN最小元空间容量 (kB).
MCMX最大元空间容量 (kB).
MC元空间容量 (kB).
CCSMN最小类压缩空间容量 (kB).
CCSMX最大类压缩空间容量 (kB).
CCSC类压缩容量 (kB).
YGCYGC次数
FGCFGC次数
  1. jstat -gccause 11146: 显示有关GC相关的统计(与相同-gcutil),以及最近和当前(如果适用)GC原因。
david@UX501:~$ jstat -gccause 11146
S0     S1     E      O      M     CCS    YGC  YGCT    FGC    FGCT     GCT     LGCC    GCC                 
0.00   0.00  64.37   0.00  17.36  19.39  0    0.000   0      0.000    0.000   No GC   No GC 
字段含义
LGCC上一次GC原因
GCC当前GC原因
其它字段与-gcutil查询出的信息相同
  1. jstat -gcnew 11146: 查看与新生代相关的统计数据
david@UX501:~$ jstat -gcnew 11146
S0C    S1C      S0U    S1U   TT  MTT  DSS    EC       EU       YGC    YGCT  
7680.0 7680.0   0.0    0.0   15  15   0.0    48640.0  34228.2   0     0.000
字段含义
S0C当前S0容量(kB)
S1C当前S1的容量(kB)
S0US0已使用(kB)
S1US1已使用(kB)
TT持有次数
MTT最大持有次数
DSS所需的幸存者大小(kB)
EC当前Eden区容量(kB)
EUEden区已用(kB)
YGCYGC次数
YGCTYGC消耗的时间
  1. jstat -gcnewcapacity 11146: 新生代空间统计
david@UX501:~$ jstat -gcnewcapacity 11146
NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC 
64000.0   1018880.0   64000.0  339456.0   7680.0 339456.0   7680.0  1017856.0    48640.0   0     0
字段含义
NGCMN新生代最小容量 (kB).
NGCMX新生代最大容量(kB).
NGC当前新生代容量 (kB).
S0CMXS0最大容量(kB).
S0C当前S0容量 (kB).
S1CMXS1最大容量 (kB).
S1C当前S1容量 (kB).
ECMXEden区最大容量 (kB).
EC当前Eden区容量 (kB).
YGCYGC次数
FGCFGC次数
  1. jstat -gcold 11146: 查看老年代和元空间相关统计
david@UX501:~$ jstat -gcold 11146
MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT   
4480.0   777.9   384.0    74.5     128512.0      0.0       0      0    0.000    0.000
字段含义
MC元空间容量大小 (kB).
MU元空间已用大小 (kB).
CCSC类压缩空间容量 (kB).
CCSU类压缩空间已用大小(kB).
OC老年代容量 (kB).
OU老年代空间已用大小 (kB).
YGCYGC次数
FGCFGC次数
FGCTFGC耗费的时间
GCTGC耗费总时间
  1. jstat -gcoldcapacity 11146: 查看老年代有关容量的统计信息
david@UX501:~$ jstat -gcoldcapacity 11146
OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT   
128512.0   2038784.0    128512.0    128512.0   0     0     0.000    0.000
字段含义
OGCMN老年代最小容量 (kB)
OGCMX老年代最大容量(kB)
OGC老年代当前容量 (kB)
OC老年代当前容量 (kB)
YGCYGC次数
FGCFGC次数
FGCTFGC消耗的时间
GCTGC总耗时
  1. jstat -gcmetacapacity 11146: 有关元空间容量大小统计信息
david@UX501:~$ jstat -gcmetacapacity 11146
   MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT   
    0.0     1056768.0    4864.0     0.0      1048576.0    512.0     1     0    0.000    0.025
字段含义
MCMN元空间最小容量 (kB).
MCMX元空间最大容量 (kB).
MC元空间容量 (kB).
CCSMN类压缩空间最小容量 (kB).
CCSMX类压缩空间最大容量 (kB).
YGCYGC次数
FGCFGC次数
FGCTFGC消耗的时间
GCTGC耗费总时间
  1. jstat -gcutil 11146: 查看GC统计摘要
david@UX501:~$ jstat -gcutil 11146
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00  99.79  21.78   6.18  53.48  52.75    1     0.025     0    0.000    0.025
字段含义
S0S0已用空间 (%)
S1S1已用空间 (%)
EEden已用空间 (%)
O老年代已用空间 (%)
M元空间已用空间 (%)
CCS已用类压缩空间 (%)
YGCYGC次数
YGCTYGC耗费的时间
FGCFGC次数
FGCTFGC耗费的时间
GCTGC耗费的总时间
  1. jstat -printcompilation 11146: 查看即时编译相关的统计信息
david@UX501:~$ jstat -printcompilation 11146
Compiled  Size  Type Method
105       38    1 	 java/io/PrintStream println
字段含义
Compiled最近编译的方法执行的编译任务数
Size最近编译的方法的字节码的字节数
Type最近编译方法的编译类型
Method最近编译的方法的类名和方法名
参考资料

Oracle官方文档–jstat

注: 未经授权,禁止转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值