JDK自带的jstat命令该怎么用详解

 更新时间:2025年10月20日 12:01:17   作者:爪哇手记  
jstat是jdk的命令(查看jvm的统计信息),可以监控类似类加载信息,GC信息等,这篇文章主要介绍了JDK自带的jstat命令该怎么用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、基础语法

jstat - [-t] [-h]  [ []]
  • option:监控类型(如-gcutil监控GC百分比)。
  • vmid:Java进程ID(通过jps获取)。
  • interval:采样间隔(单位毫秒或秒,默认毫秒)。
  • count:采样次数(默认无限次)。
  • -t:添加时间戳列。
  • -h:每输出``行后显示表头。

二、常用选项及输出解读

监控GC及内存使用(最常用)

  • 命令:
    jstat -gcutil  1000 10  每秒采样一次,共10次
    
  • 输出示例:
    S0  S1  E    O     M     CCS   YGC YGCT  FGC FGCT  GCT
    0.0 12.5 78.3 35.2  89.6  85.4  45  0.32  3   0.15  0.47
    
  • 关键字段:
    • S0/S1:Survivor区使用率(过高可能Survivor不足)。
    • E:Eden区使用率(接近100%触发Young GC)。
    • O:老年代使用率(持续增长可能内存泄漏)。
    • YGC/YGCT:Young GC次数及总耗时(频繁Young GC需增大新生代)。
    • FGC/FGCT:Full GC次数及总耗时(频繁Full GC需优化老年代)。

查看内存容量细节

  • 命令:
    jstat -gc   显示各区域大小(字节)
    
  • 输出示例:
    S0C  S1C  S0U  S1U  EC    EU    OC      OU    MC      MU     YGC  YGCT  FGC  FGCT  GCT
    64   64   0    16   1024  800   4096    1500  2560    2000   12   0.08  3    0.15  0.23
    
  • 关键字段:
    • S0C/S1C:Survivor区容量(单位KB)。
    • EC/EU:Eden区容量及使用量。
    • OC/O:老年代容量及使用量。

分析类加载

  • 命令:
    jstat -class   查看类加载/卸载情况
    
  • 输出示例:
    Loaded  Bytes  Unloaded  Bytes  Time
    12345   2345.6  0         0.0    0.52
    
  • 关键字段:
    • Loaded:已加载类数量(突增可能动态生成类)。
    • Unloaded:卸载类数量(非0可能类加载泄漏)。

追踪GC原因

  • 命令:
    jstat -gccause   显示最近一次GC原因
    
  • 输出示例:
    S0   S1  E    O     M     CCS   YGC YGCT  FGC FGCT  GCT  LGCC             GCC
    0.0 12.5 78.3 35.2  89.6  85.4  45  0.32  3   0.15  0.47 Allocation Failure No GC
    
  • 关键字段:
    • LGCC:最近一次GC原因(如Allocation Failure表示Eden区满)。

三、典型场景应用

诊断Young GC频繁

jstat -gcutil  1000  持续监控Eden区使用率
  • 问题表现:E列接近100%,YGC次数快速增长。
  • 解决方案:增大新生代(-Xmn)或调整Survivor比例(-XX:SurvivorRatio)。

定位内存泄漏

jstat -gc  60000 10  每分钟采样,观察老年代增长
  • 问题表现:OU持续增长且FGC频繁。
  • 解决方案:生成堆转储(jmap -dump),用MAT分析泄漏对象。

分析元空间溢出

jstat -gcutil   查看Metaspace使用率
  • 问题表现:M列接近100%。
  • 解决方案:限制元空间大小(-XX:MaxMetaspaceSize=256m)。

四、注意事项

  1. 远程监控:
    • 需配置jstatd服务(JDK 8后推荐用jcmd替代)。
    • 命令示例:
      jstat -gcutil @ 1000  远程监控
      
  2. 输出解读:
    • 百分比列(如-gcutil)更直观,容量列(如-gc)适合分析绝对值。
    • 结合-t参数添加时间戳,便于关联业务峰值。
  3. 与其他工具联动:
    • 发现GC异常后,用jmap -dump生成堆转储,再用MAT分析对象分布。
    • 长期监控可通过脚本定期采集jstat数据,结合awk分析趋势。

五、完整选项参考

选项功能典型输出字段
-gcnew新生代GC详情TT(对象年龄阈值)、DSS(Survivor目标大小)
-gcold老年代GC详情MU(元空间使用量)、FGCT(Full GC总耗时)
-printcompilationJIT编译统计Compiled(编译方法数)、Failed(编译失败数)

通过灵活组合选项和参数,jstat可成为JVM性能调优的核心工具。建议结合具体问题选择监控维度,并持续观察数据变化。

到此这篇关于JDK自带的jstat命令该怎么用的文章就介绍到这了,更多相关JDK自带jstat命令使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java设计模式之中介者模式(Mediator Pattern)简介

    Java设计模式之中介者模式(Mediator Pattern)简介

    这篇文章主要介绍了Java设计模式之中介者模式(Mediator Pattern),需要的朋友可以参考下
    2014-07-07
  • 详解Spring Cloud Config采用Git存储时两种常用的配置策略

    详解Spring Cloud Config采用Git存储时两种常用的配置策略

    这篇文章主要介绍了详解Spring Cloud Config采用Git存储时两种常用的配置策略,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • java的新特性反射机制应用及操作示例详解

    java的新特性反射机制应用及操作示例详解

    这篇文章主要为大家介绍了java的新特性反射机制的操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • SpringBoot集成ZXing实现二维码的生成与读取功能

    SpringBoot集成ZXing实现二维码的生成与读取功能

    本教程将详细讲解如何在 Spring Boot 项目中集成 ZXing 库实现二维码的生成(返回 Base64 编码)和读取(解析图片的二维码)功能,并覆盖常见异常处理、参数优化等实战要点,适合 Java 开发新手快速上手,需要的朋友可以参考下
    2026-03-03
  • Java多线程的sleep休眠的实现

    Java多线程的sleep休眠的实现

    本文主要介绍了Java多线程的sleep休眠的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • springboot集成junit编写单元测试实战

    springboot集成junit编写单元测试实战

    在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,本文主要介绍了springboot集成junit编写单元测试实战,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Java实现TFIDF算法代码分享

    Java实现TFIDF算法代码分享

    这篇文章主要介绍了Java实现TFIDF算法代码分享,对算法进行了简单介绍,概念,原理,以及实现代码的分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • SpringMVC通过模型视图ModelAndView渲染视图的实现

    SpringMVC通过模型视图ModelAndView渲染视图的实现

    这篇文章主要介绍了SpringMVC通过模型视图ModelAndView渲染视图的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • springboot+quartz以持久化的方式实现定时任务的代码

    springboot+quartz以持久化的方式实现定时任务的代码

    这篇文章主要介绍了springboot+quartz以持久化的方式实现定时任务的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • springboot2.5.0和redis整合配置详解

    springboot2.5.0和redis整合配置详解

    本篇文章向大家介绍springboot2.5.0 整合 redis 配置方法,教大家在pom添加依赖的方法如何调用redis,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-06-06

最新评论