jstat 详解

jstat 详解

1. 概述

jstat(Java Virtual Machine Statistics Monitoring Tool) 是 JDK 自带的命令行工具,用于监控 JVM 运行时状态,包括类加载、GC、堆内存、编译等统计信息。无需图形界面,非常适合服务端性能监控与调优。


2. 命令格式

jstat [options] <vmid> [interval] [count]
  • options: 监控选项(详见下文)。
  • vmid: JVM 进程 ID(通过 jpsps 获取)。
  • interval: 采样间隔时间(毫秒)。
  • count: 采样次数(默认为持续输出)。

3. 常用选项

选项 说明
-class 监控类加载/卸载数量及耗时(Loaded/Unloaded/Time)。
-compiler 显示 JIT 编译器编译的方法数量及耗时。
-gc 堆内存各区域容量(Capacity)及实际使用量(Usage),包含 GC 次数/时间。
-gccapacity 堆内存各区域的容量(最小/最大/当前)。
-gcutil 以百分比显示堆内存使用率,并输出 GC 统计。
-gccause -gcutil,额外显示最近一次和当前 GC 的原因(如 Allocation Failure)。
-gcnew 新生代(Young Gen)内存统计。
-gcold 老年代(Old Gen)内存统计。
-gcmetacapacity 元空间(Metaspace)容量统计(JDK8+)。

4. 核心参数详解

4.1 -gc 输出字段
字段 含义 示例
S0C Survivor 0 区容量(KB) 10240.0
S1C Survivor 1 区容量 10240.0
S0U Survivor 0 区已使用量 0.0
S1U Survivor 1 区已使用量 1024.0
EC Eden 区容量 81920.0
EU Eden 区已使用量 40960.0
OC 老年代容量 204800.0
OU 老年代已使用量 102400.0
YGC Young GC 次数 100
YGCT Young GC 总耗时(秒) 5.456
FGC Full GC 次数 3
FGCT Full GC 总耗时 1.234
GCT GC 总耗时 6.690

4.2 -gcutil 输出字段(百分比形式)
字段 含义 示例
S0 Survivor 0 区使用率 50.00
S1 Survivor 1 区使用率 0.00
E Eden 区使用率 75.25
O 老年代使用率 85.30
M 元空间(Metaspace)使用率 95.80
CCS 压缩类空间(Compressed Class Space)使用率 80.50
YGC Young GC 次数 200
YGCT Young GC 总耗时 10.20
FGC Full GC 次数 5
FGCT Full GC 总耗时 3.50
GCT 总 GC 耗时 13.70

5. 使用示例

监控进程 12345 的 GC 情况(每秒采样,共 5 次)
jstat -gcutil 12345 1000 5

输出示例:

S0   S1   E    O     M     CCS  YGC YGCT FGC FGCT  GCT
0.00 50.0 75.3 85.30 95.80 80.50 200 10.20 5  3.50 13.70

分析:

  • 老年代(O)使用率 85.3%,接近容量上限,可能触发 Full GC。
  • Full GC 已发生 5 次,耗时长(3.5秒),需检查内存泄漏或调整堆大小。

6. 常见问题诊断

  • 频繁 Young GC:Eden 区增速快(EU迅速增长),考虑增大 -Xmn(新生代大小)。
  • Full GC 频繁/Old 区未释放:可能存在内存泄漏,检查对象生命周期或使用 jmap 分析堆转储。
  • 元空间(M)使用率高:调整 -XX:MetaspaceSize-XX:MaxMetaspaceSize

7. 注意事项

  • JDK 版本差异:JDK8 前为永久代(PermGen,显示为 P),JDK8+ 为元空间(Metaspace,显示为 M)。
  • 结合其他工具jstat 仅提供统计数据,深入分析需配合 jstack(线程栈)、jmap(堆转储)或 VisualVM。
  • 容器环境:若在 Docker/K8s 中使用,确保正确获取容器内 JVM 的 PID。

通过熟练使用 jstat,开发者可以快速定位 JVM 性能瓶颈,尤其在 GC 调优和内存溢出问题的排查中效果显著。

posted @ 2025-05-22 15:41  玛卡巴卡糖  阅读(494)  评论(0)    收藏  举报