jstat命令

本文详细介绍jstat命令在Linux环境下如何查看JVM的GC情况,包括堆内存各部分使用量、类加载数量、编译统计、垃圾回收统计等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 jstat命令查看jvm的GC情况 (以Linux为例)

 

 jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:

 jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

 注意!!!:使用的jdk版本是jdk8.

 

  类加载统计:

 

  • Loaded:加载class的数量
  • Bytes:所占用空间大小
  • Unloaded:未加载数量
  • Bytes:未加载占用空间
  • Time:时间

 

  编译统计

 

  • Compiled:编译数量。
  • Failed:失败数量
  • Invalid:不可用数量
  • Time:时间
  • FailedType:失败类型
  • FailedMethod:失败的方法

 

  垃圾回收统计

jstat -gc 10664 5000  #每5秒显示gc情况

 

  • S0C:第一个幸存区的大小
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小
  • S1U:第二个幸存区的使用大小
  • EC:伊甸园区的大小
  • EU:伊甸园区的使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • MC:方法区大小
  • MU:方法区使用大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

 

  堆内存统计

  

  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:当前新生代容量
  • S0C:第一个幸存区大小
  • S1C:第二个幸存区的大小
  • EC:伊甸园区的大小
  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:当前老年代大小
  • OC:当前老年代大小
  • MCMN:最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC:年轻代gc次数
  • FGC:老年代GC次数

 

  新生代垃圾回收统计

 

  • S0C:第一个幸存区大小
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小
  • S1U:第二个幸存区的使用大小
  • TT:对象在新生代存活的次数
  • MTT:对象在新生代存活的最大次数
  • DSS:期望的幸存区大小
  • EC:伊甸园区的大小
  • EU:伊甸园区的使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间

 

  新生代内存统计

 

  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:当前新生代容量
  • S0CMX:最大幸存1区大小
  • S0C:当前幸存1区大小
  • S1CMX:最大幸存2区大小
  • S1C:当前幸存2区大小
  • ECMX:最大伊甸园区大小
  • EC:当前伊甸园区大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代回收次数

 

  老年代垃圾回收统计

 

  • MC:方法区大小
  • MU:方法区使用大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

 

 老年代内存统计

 

  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:当前老年代大小
  • OC:老年代大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

 

 元数据空间统计

 

  • MCMN: 最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

 

 总结垃圾回收统计

 

  • S0:幸存1区当前使用比例
  • S1:幸存2区当前使用比例
  • E:伊甸园区使用比例
  • O:老年代使用比例
  • M:元数据区使用比例
  • CCS:压缩使用比例
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

 

 JVM编译方法统计

 

  • Compiled:最近编译方法的数量
  • Size:最近编译方法的字节码数量
  • Type:最近编译方法的编译类型。
  • Method:方法名标识。
### ### jstat 命令使用方法及 JVM 状态监控指南 `jstat` 是 JDK 自带的一个命令行工具,用于监控 JVM 的运行状态,尤其是垃圾回收(GC)和类加载等关键指标。它可以帮助开发者实时观察 GC 频率、耗时,检测内存泄漏趋势,并验证 JVM 参数调整的效果[^1]。 #### 基本命令格式 `jstat` 的基本命令格式如下: ```bash jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] ``` - `<option>`:指定要监控的内容,例如 `gc`、`class`、`compiler` 等。 - `<vmid>`:Java 进程的虚拟机 ID,通常为进程 PID。 - `<interval>`:采样间隔时间(单位为毫秒或秒)。 - `<count>`:采样次数。 - `-t`:输出时间戳。 - `-h<lines>`:每 `<lines>` 行输出表头。 #### 常用选项及示例 1. **监控垃圾回收情况** 使用 `-gc` 选项可以查看堆内存各区域(Eden、Survivor、Old)的使用情况以及 GC 的执行次数和耗时。 ```bash jstat -gc 23321 1000 5 ``` 上述命令将每秒输出一次 PID 为 23321 的 Java 进程的 GC 状态,共输出 5 次。输出内容包括: - `S0C/S1C`:Survivor 0/1 区的容量。 - `S0U/S1U`:Survivor 0/1 区的使用量。 - `EC/EU`:Eden 区的容量和使用量。 - `OC/OU`:Old 区的容量和使用量。 - `MC/MU`:元空间(Metaspace)的容量和使用量。 - `YGC/YGCT`:Young GC 的次数和总耗时。 - `FGC/FGCT`:Full GC 的次数和总耗时。 - `GCT`:所有 GC 的总耗时[^1]。 2. **监控类加载状态** 使用 `-class` 选项可以查看类加载的统计信息,包括加载类的数量、卸载类的数量以及类加载耗时。 ```bash jstat -class 23321 ``` 3. **监控编译器状态** 使用 `-compiler` 选项可以查看 JIT 编译器的状态,包括已执行的编译任务数、失败的编译任务数以及编译耗时。 ```bash jstat -compiler 23321 ``` 4. **带时间戳输出** 使用 `-t` 参数可以在输出中添加时间戳,便于分析时间序列数据。 ```bash jstat -gc -t 23321 1000 ``` 5. **控制表头输出频率** 使用 `-h` 参数可以指定每隔多少行输出一次表头,便于在长时间运行的监控中识别数据。 ```bash jstat -gc -h5 23321 1000 ``` #### 监控要素与性能分析 JVM 监控通常包括以下关键要素: - **内存使用情况**:包括堆内存和非堆内存的分配与使用情况。 - **线程状态**:活动线程数、守护线程数等。 - **GC 行为**:各区域的 GC 次数、耗时及频率。 - **CPU 占用率**:Java 进程的 CPU 使用情况。 通过 `jstat` 的输出,可以判断是否存在频繁的 GC(如 `YGC` 或 `FGC` 频繁发生),从而推测是否存在内存泄漏或堆内存配置不合理的问题。此外,通过对比不同时间点的 GC 耗时和内存使用情况,可以验证 JVM 参数调整的效果。 #### 结合其他工具进行综合分析 除了 `jstat`,还可以结合以下工具进行更全面的 JVM 监控与调优: - **`jstack`**:用于分析线程堆栈,定位死锁或线程阻塞问题。 - **`jmap`**:用于生成堆转储快照,分析内存泄漏。 - **`jinfo`**:用于查看和动态修改 JVM 参数。 - **`jconsole` / `jvisualvm`**:图形化工具,提供实时监控和详细分析功能。 通过这些工具的综合使用,开发者可以更深入地理解 JVM 的工作原理,并在实际工作中进行有效的监控和调优,确保 Java 应用的高效运行[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值