jstat命令怎么使用

发布时间:2022-01-29 11:09:44 作者:zzz
来源:亿速云 阅读:388
# jstat命令怎么使用

## 一、jstat简介

`jstat`(Java Virtual Machine Statistics Monitoring Tool)是JDK自带的一款轻量级性能监控工具,主要用于监控JVM的运行状态信息。它可以显示JVM中的类加载、内存、垃圾回收、JIT编译等运行时数据,是排查内存泄漏、GC问题的重要工具。

### 主要特点:
- **无需远程连接**:直接监控本地JVM进程
- **低开销**:对应用性能影响极小
- **实时数据**:支持动态刷新输出
- **多维度指标**:提供多种监控选项

---

## 二、基本语法格式

```bash
jstat [options] <vmid> [interval] [count]

参数说明:


三、常用监控选项

选项 说明
-class 类加载统计
-gc 堆内存和GC情况
-gccapacity 各代内存容量
-gcutil GC统计摘要
-gccause GC原因统计
-gcnew 新生代统计
-gcold 老年代统计
-compiler JIT编译统计
-printcompilation 方法编译统计

四、典型使用场景

1. 类加载监控(-class)

jstat -class <pid> 1000 5

输出示例:

Loaded  Bytes  Unloaded  Bytes     Time
  3276  7120.3        0     0.0       3.12

2. 堆内存与GC监控(-gc)

jstat -gc <pid> 2000 3

输出字段说明:

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
512.0  512.0   0.0   368.6   4096.0   512.0    10240.0     2048.0   4864.0 3926.8 512.0  410.2      5    0.123     1    0.456    0.579

3. 内存使用率监控(-gcutil)

jstat -gcutil <pid> 1s

动态显示各区域使用百分比:

  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  0.00  72.03  12.45  20.00  80.72  80.11     15    0.234     2    0.876    1.110

4. 内存容量监控(-gccapacity)

jstat -gccapacity <pid>

显示各代内存的初始/最大容量:

 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
 10240.0 174080.0  51200.0 512.0 512.0  50176.0    20480.0   349696.0    102400.0    102400.0      0.0 1081344.0  4864.0      0.0 1048576.0   512.0     15     2

五、高级用法

1. 组合监控

jstat -gc -gccause <pid> 2s

同时显示GC统计和最近GC原因。

2. 持续监控

jstat -gcutil <pid> 500ms

每500毫秒刷新一次数据(按Ctrl+C终止)。

3. 输出到文件

jstat -gc <pid> 1s 10 > gc.log

将10次采样结果重定向到文件。


六、输出字段详解

GC相关字段

字段 说明
YGC Young GC事件次数
YGCT Young GC累计时间
FGC Full GC事件次数
FGCT Full GC累计时间
GCT 总GC时间

内存区域字段

前缀 含义 示例
S0/S1 Survivor区 S0U=Survivor0使用量
E Eden区 EU=Eden使用量
O Old区 OC=Old区容量
M/Metaspace 元空间 MU=元空间使用量
CCS 压缩类空间 CCSU=使用量

七、实际案例分析

场景:排查内存泄漏

  1. 使用-gcutil观察老年代使用趋势:
    
    jstat -gcutil 12345 5s
    
  2. 如果O列(老年代使用率)持续上升且Full GC后不下降:
    • 可能存在内存泄漏
    • 配合jmap生成堆转储进一步分析

场景:GC调优

  1. 通过-gc统计YGC/FGC频率:
    
    jstat -gc 12345 1s 10
    
  2. 如果YGC过于频繁:
    • 考虑增大新生代大小(-Xmn
  3. 如果FGC频繁:
    • 检查老年代大小(-Xmx
    • 检查对象晋升阈值

八、注意事项

  1. 权限要求:需要与目标JVM相同的用户权限
  2. 仅本地监控:默认不支持远程JVM监控(可通过JMX实现)
  3. 版本兼容:不同JDK版本输出可能略有差异
  4. 数据解读:建议结合jstackjmap等工具综合分析

九、总结

jstat作为JVM监控的瑞士军刀,具有以下优势: - 实时获取JVM关键指标 - 极低的性能开销 - 丰富的监控维度 - 无需额外安装

掌握jstat的使用能帮助开发者: ✅ 快速诊断内存问题
✅ 优化GC参数
✅ 验证JVM配置效果
✅ 监控应用运行状态

建议将常用命令保存为脚本,或集成到监控系统中实现自动化巡检。 “`

注:本文基于JDK 8编写,不同JDK版本的部分输出可能略有差异。实际使用时请结合具体环境调整参数。

推荐阅读:
  1. jvm监控工具jps,jstat,jstack,jmap的使用方法
  2. GC问题排查常用命令-jstat

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jstat

上一篇:@Transactional注解怎么用

下一篇:Linux中的网络配置文件有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》