jstat 命令详解

以下是 jstat 命令的详细解析,包括常用参数及其用途:


命令格式

jstat [options] <vmid> [interval] [count]
  • vmid:JVM 进程 ID(或通过 jps 获取)
  • interval:采样间隔时间(单位:毫秒,默认只输出一次)
  • count:采样次数(默认无限次,若指定则按间隔输出指定次数)

常用参数(options)

参数 作用 典型输出字段说明
-class 类加载/卸载统计 Loaded(已加载类数), Bytes(占用的KB数), Unloaded(卸载类数), Time(加载耗时,单位:秒)
-compiler JIT 编译器编译的方法统计 Compiled(编译任务数), Failed(失败数), Invalid(无效数), Time(编译耗时)
-printcompilation 热点方法编译详情 Compiled(编译次数), Size(字节码大小), Type(编译类型), Method(方法名)
-gc GC 相关堆状态(总容量、已用、回收次数/时间等) S0C/S1C(Survivor容量), EC(Eden容量), OC(Old容量), YGC(Young GC次数), YGCT(Young GC总时间)
-gccapacity 各代内存池的最小/最大容量(新生代、老年代、元空间等) NGCMN(新生代最小容量), NGCMX(新生代最大容量), OC(当前老年代容量)
-gcutil 各内存区域使用率(按百分比显示) S0U(Survivor 0使用率), E(Eden使用率), O(Old使用率), M(Metaspace使用率), CCS(压缩类空间使用率)
-gcnew 新生代(Young Generation)详细状态 TT(对象年龄阈值), MTT(最大阈值), DSS(期望的Survivor大小)
-gcold 老年代(Old Generation)和元空间(Metaspace)状态 MC(Metaspace容量), MU(Metaspace使用量), CCSC(压缩类空间容量)
-gcmetacapacity Metaspace 元数据容量统计(Java 8+) MCMN(最小容量), MCMX(最大容量), MC(当前容量)

重点参数示例(以 -gc 输出为例)

输出字段详解:

 S0C    S1C    S0U    S1U    EC     EU     OC     OU     MC     MU     CCSC   CCSU   YGC    YGCT    FGC    FGCT    CGC    CGCT     GCT
512.0  512.0   0.0   438.0 4096.0 512.0  2048.0 1452.0 1536.0 1512.0 256.0  248.0   28     0.139   0      0.000   6      0.009    0.148
字段 含义 单位
S0C Survivor 0 区当前容量 (Capacity) KB
S1C Survivor 1 区当前容量 KB
S0U Survivor 0 区已使用量 (Used) KB
S1U Survivor 1 区已使用量 KB
EC Eden 区当前容量 KB
EU Eden 区已使用量 KB
OC Old 区当前容量 KB
OU Old 区已使用量 KB
YGC Young GC 触发次数
YGCT Young GC 累计耗时
FGC Full GC 触发次数
FGCT Full GC 累计耗时
GCT 所有 GC 总耗时

常用场景示例

  1. 查看 GC 状态(每1秒采样一次,共5次)

    jstat -gc <pid> 1000 5
    
  2. 监控内存使用率(百分比形式)

    jstat -gcutil <pid> 2000
    
  3. 检查类加载情况

    jstat -class <pid>
    
  4. 分析新生代内存分配

    jstat -gcnew <pid>
    
  5. 追踪 Metaspace 容量变化

    jstat -gcmetacapacity <pid> 3000 3
    

关键诊断技巧

  • Young GC 频繁:若 YGC 增长快且 EU(Eden使用量)在 GC 后未显著下降,可能存在短生命周期对象过多或 Eden 区过小。
  • Full GC 触发:若 FGC 次数持续增加且 OU(Old使用率)未降低,可能老年代存在内存泄漏。
  • Metaspace 溢出风险:当 M(Metaspace利用率)接近 100% 且持续不降,需检查动态类生成(如反射、ASM)或调整 -XX:MaxMetaspaceSize

通过 jstat 可以快速定位内存瓶颈或 GC 效率问题,结合 jmapjstack 等工具进一步分析。

posted @   lllrrrqqq  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示