jstat 命令详解

jstat 是 JDK 自带的 JVM 监控工具,用于查看堆内存和 GC 状态。

基本用法

jstat -gc <pid> <间隔ms>

输出列含义

列名全称含义
S0CSurvivor 0 Capacity幸存区0的总容量
S1CSurvivor 1 Capacity幸存区1的总容量
S0USurvivor 0 Used幸存区0的已使用大小
S1USurvivor 1 Used幸存区1的已使用大小
ECEden Capacity伊甸园区的总容量
EUEden Used伊甸园区的已使用大小
OCOld Capacity老年代的总容量
OUOld Used老年代的已使用大小
MCMetaspace Capacity元空间的总容量(JDK8+)
MUMetaspace Used元空间的已使用大小
CCSCCompressed Class Space Capacity压缩类空间的总容量
CCSUCompressed Class Space Used压缩类空间的已使用大小
YGCYoung GC Count新生代 GC 总次数
YGCTYoung GC Time新生代 GC 总耗时(秒)
FGCFull GC CountFull GC 总次数
FGCTFull GC TimeFull GC 总耗时(秒)
CGCConcurrent GC Count并发 GC 次数(G1GC 特有)
CGCTConcurrent GC Time并发 GC 总耗时(秒)
GCTTotal GC Time所有 GC 总耗时(秒)

输出示例

$ jstat -gc 1 1000
 S0C    S1C     S0U    S1U      EC      EU       OC       OU      MC     MU    CCSC   CCSU   YGC  YGCT  FGC FGCT  CGC  CGCT    GCT
 0.0  29696.0   0.0  29696.0 307200.0 274432.0 627712.0 566141.0 222848.0 220615.3 22336.0 21113.1 214 6.156  0  0.000  78  0.747  6.903

关键指标解读

  • OU 接近 OC:老年代快满了,即将触发 Full GC
  • FGC > 0:已发生 Full GC,需关注
  • MU 接近 MC:元空间不足,需扩容或排查类加载泄漏
  • YGC 单次耗时 = YGCT / YGC,超过 50ms 需关注

相关笔记