jstat命令

jstat 是一个强大的命令行工具,用于监控 Java 应用程序的运行时状态,特别是与垃圾收集(GC)相关的统计信息和内存使用情况。下面是一个使用 jstat 监控特定 Java 进程的垃圾回收统计信息的具体例子:

假设有一个正在运行的 Java 应用程序,其进程标识符(PID)为 12345。我们想要每两秒刷新一次数据,连续监控10次其 GC 的统计信息。

命令示例:

复制代码
jstat -gcutil 12345 2000 10

命令解析:

  • -gcutil: 这是 jstat 的选项,指定我们要查看的是与垃圾收集相关的实用度统计。它会显示各个内存区域(如 Eden、Survivor、Old Gen、Perm Gen 或 Metaspace 等,取决于 JVM 版本和配置)的使用率、已使用的空间、总空间以及最近几次垃圾收集的相关信息。
  • 12345: 这是目标 Java 进程的 PID,确保 jstat 能够连接到正确的 JVM 实例。
  • 2000: 表示间隔时间,单位是毫秒。这里设置为 2000 意味着 jstat 将每隔两秒(即2000毫秒)获取并输出一次统计信息。
  • 10: 表示查询次数,即 jstat 将连续执行上述操作共10次后自动停止。如果您希望持续监控,可以省略此参数或将其设置为一个较大的数值。

执行上述命令后,您将在命令行中看到类似以下格式的输出:

复制代码
S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
0.00   0.00  ¼.98   57.68  93.20  88.17     .jpg     0.213   0      0.000    0.213
...

每一行代表一个采样时刻的统计数据,各列含义大致如下:

  • S0S1:Survivor 区的使用率。
  • E:Eden 区的使用率。
  • O:Old Generation (Tenured) 区的使用率。
  • M:Metaspace 或 PermGen(取决于 JVM 版本)的使用率。
  • CCS:压缩类空间的使用率(仅在某些 JVM 版本中出现)。
  • YGC: 自JVM启动以来年轻代垃圾收集的次数。
  • YGCT: 年轻代垃圾收集所耗用的总时间。
  • FGC: 自JVM启动以来 full GC 的次数。
  • FGCT: full GC 所耗用的总时间。
  • GCT: 自JVM启动以来所有垃圾收集(包括年轻代和 full GC)所耗用的总时间。

这个例子展示了如何使用 jstat 监控 Java 应用程序的 GC 统计信息。根据实际需要,您可以调整选项、间隔时间和查询次数以适应不同的监控场景。

相关推荐
无毁的湖光Al2 小时前
日常问题排查-Younggc突然变长
java·jvm·后端
..Cherry..3 小时前
【java】jvm
java·开发语言·jvm
zz-zjx17 小时前
JVM 内存结构与 GC 机制详解( 实战优化版)
java·jvm·tomcat
siriuuus19 小时前
JVM 内存分区及 GC 垃圾回收 相关知识总结
jvm·full gc
Arlene19 小时前
JVM Java虚拟机
java·开发语言·jvm
老K的Java兵器库20 小时前
对象创建源码追踪:从 new 指令到 JVM 内部实现
java·jvm
老K的Java兵器库20 小时前
Metaspace OOM 排查实录:一次 Spring 热部署爆掉 256 M 元空间
java·jvm·spring
syt_biancheng1 天前
C++ 多态(1)
jvm·c++·学习
沐浴露z1 天前
【JVM】详解 运行时数据区
java·jvm
007php0072 天前
Docker 实战经验之关键文件误删恢复指南(一)
jvm·docker·云原生·容器·面试·职场和发展·eureka