jstat命令

jstat(JVM Statistics Monitoring Tool)

监视虚拟机各种运行状态的工具。

 

命令格式
jstat [ options vmid [ interval [s|ms]  [count]] ]

 

常用参数说明
-gc 监视Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间等信息

-gcutil 监视Java堆状况,显示已用空间占总空间的百分比

-gcnew 监视新生代GC状况

-gcold  监视老年代GC状况

-gccause 同gcutil,额外输出导致上一次GC产生的原因

 

示例:1

[root@ss3 ~]# jstat -gc 29764 1000 10

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   

6528.0 6464.0 3490.1  0.0   511296.0 487847.4  524288.0   263216.1  131072.0 61621.6  26706  484.733  13     13.569  498.302

6528.0 6464.0 3490.1  0.0   511296.0 498329.6  524288.0   263216.1  131072.0 61621.6  26706  484.733  13     13.569  498.302

6528.0 6464.0 3490.1  0.0   511296.0 505260.7  524288.0   263216.1  131072.0 61621.6  26706  484.733  13     13.569  498.302

6656.0 5440.0  0.0   5384.8 511296.0  8929.5   524288.0   263616.1  131072.0 61621.6  26707  484.753  13     13.569  498.322

6656.0 5440.0  0.0   5384.8 511296.0 11135.2   524288.0   263616.1  131072.0 61621.6  26707  484.753  13     13.569  498.322

6656.0 5440.0  0.0   5384.8 511296.0 17847.8   524288.0   263616.1  131072.0 61621.6  26707  484.753  13     13.569  498.322

6656.0 5440.0  0.0   5384.8 511296.0 38494.2   524288.0   263616.1  131072.0 61621.6  26707  484.753  13     13.569  498.322

6656.0 5440.0  0.0   5384.8 511296.0 46879.5   524288.0   263616.1  131072.0 61621.6  26707  484.753  13     13.569  498.322

6656.0 5440.0  0.0   5384.8 511296.0 51087.2   524288.0   263616.1  131072.0 61621.6  26707  484.753  13     13.569  498.322

 6656.0 5440.0  0.0   5384.8 511296.0 51089.2   524288.0   263616.1  131072.0 61621.6  26707  484.753  13     13.569  498.322

 

 S0C    S0总空间

 S1C    S1总空间

 S0U    S0已用空间

 S1U    S1已用空间  

 EC      Eden总空间

 EU      Eden已用空间 

 OC      Old总空间   

 OU      Old已用空间

 PC      Permanent总空间

 PU      Permanent已用空间

 YGC   Young GC 次数

 YGCT Young GC 总时间   

 FGC    Full GC次数

 FGCT  Full GC总时间   

 GCT     GC总时间,包括Young GC和Full GC

 

示例:2

[root@ss3 ~]# jstat -gcutil 29764 1000 10

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   

 42.82   0.00  98.49  52.90  47.01  26742  485.428    13   13.569  498.997

 42.82   0.00  99.57  52.90  47.01  26742  485.428    13   13.569  498.997

  0.00  60.83   1.06  52.98  47.01  26743  485.443    13   13.569  499.012

  0.00  60.83   4.54  52.98  47.01  26743  485.443    13   13.569  499.012

  0.00  60.83   5.64  52.98  47.01  26743  485.443    13   13.569  499.012

  0.00  60.83   7.72  52.98  47.01  26743  485.443    13   13.569  499.012

  0.00  60.83  10.31  52.98  47.01  26743  485.443    13   13.569  499.012

  0.00  60.83  12.20  52.98  47.01  26743  485.443    13   13.569  499.012

  0.00  60.83  15.24  52.98  47.01  26743  485.443    13   13.569  499.012

  0.00  60.83  16.67  52.98  47.01  26743  485.443    13   13.569  499.012

  示例2中各信息为示例1中信息按使用比例显示

 

### ### 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、付费专栏及课程。

余额充值