当前位置: 代码网 > it编程>编程语言>Javascript > JDK自带的jstat命令该怎么用详解

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

2025年10月20日 Javascript 我要评论
一、基础语法jstat - [-t] [-h] [ []]option:监控类型(如-gcutil监控gc百分比)。vmid:java进程id(通过jps获取)。interval:采样间隔(单位毫秒

一、基础语法

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命令使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com