专栏首页JVMGCjstat查看JVM的GC情况
原创

jstat查看JVM的GC情况

jstat可以查看堆各部分的使用量,以及类加载的数量

jstat所有的参数

> jstat -options
jstat -class pid         # 显示ClassLoad相关信息
jstat -compiler pid          # 显示JIT编译的相关信息
jstat -gc pid                # 显示和gc相关的堆信息
jstat -gccapacity pid        # 显示各个代的容量以及使用情况
jstat -gccause pid           # 显示垃圾回收相关信息,同时显示最后一次或正在发生GC的原因
jstat -gcmetacapacity pid    # 显示`metaspace`的大小
jstat -gcnew pid             # 显示新生代信息
jstat -gcnewcapacity pid     # 显示新生代大小和使用情况
jstat -gcold pid             # 显示老年代和永久代的信息
jstat -gcoldcapacity pid     # 显示老年代大小
jstat -gcutil pid            # 显示垃圾收集信息
jstat -printcompilation pid  # 输出JIT编译的方法信息

jstat -class pid

显示已加载class的数量,和空间占用情况

> jstat -class 18378

Loaded  Bytes  Unloaded  Bytes     Time   
 23192 42406.6     4121  5982.8      12.65
Loaded 已装载类的数量
Bytes  已装载类占用的大小
Unloaded 已经卸载类的数量
Bytes  已卸载类占用的大小
Time 装载类和卸载类的时间

jstat -compiler pid

显示JVM实时编译(JIT)信息

> jstat -compiler 18378
Compiled Failed Invalid   Time   FailedType FailedMethod
   29393      2       0   133.63          1 sun/security/util/math/intpoly/IntegerPolynomialP521 carryReduce
Compiled:编译数量。
Failed:失败数量
Invalid:不可用数量
Time:时间
FailedType:失败类型
FailedMethod:失败的方法

jstat -gc pid

显示GC相关信息

jstat -gc 18378
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
19968.0 14336.0  0.0   14268.4 1319936.0 672172.2  344064.0   158500.9  145024.0 110813.5 20608.0 12871.0    247    3.224   5      0.794    4.018
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC :年轻代中Eden(伊甸园)的容量 (字节)
EU :年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC :Old代的容量 (字节)
OU :Old代目前已使用空间 (字节)
MC:metaspace(元空间)的容量 (字节)
MU:metaspace(元空间)目前已使用空间 (字节)
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

jstat -gccapacity pid

展示JVM三代空间大小

> jstat -gccapacity 18378
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC 
 84992.0 1355776.0 1355776.0 19968.0 14336.0 1319936.0   171008.0  2711552.0   344064.0   344064.0      0.0 1173504.0 145024.0      0.0 1048576.0  20608.0    247     5
NGCMN :年轻代(young)中初始化(最小)的大小(字节)
NGCMX :年轻代(young)的最大容量 (字节)
NGC :年轻代(young)中当前的容量 (字节)
S0C :年轻代中第一个survivor(幸存区)的容量 (字节)
S1C : 年轻代中第二个survivor(幸存区)的容量 (字节)
EC :年轻代中Eden(伊甸园)的容量 (字节)
OGCMN :old代中初始化(最小)的大小 (字节)
OGCMX :old代的最大容量(字节)
OGC:old代当前新生成的容量 (字节)
OC :Old代的容量 (字节)
MCMN:metaspace(元空间)中初始化(最小)的大小 (字节)
MCMX :metaspace(元空间)的最大容量 (字节)
MC :metaspace(元空间)当前新生成的容量 (字节)
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC :从应用程序启动到采样时年轻代中gc次数
FGC:从应用程序启动到采样时old代(全gc)gc次数

jstat -gcmetacapacity pid

> jstat -gcmetacapacity 18378
   MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT   
       0.0  1173504.0   145024.0        0.0  1048576.0    20608.0   248     5    0.794    4.036
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC :从应用程序启动到采样时年轻代中gc次数
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

jstat -gcnew pid

年轻代对象信息

> jstat -gcnew 18378
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT 
19968.0 24576.0 19940.4    0.0  8  15 24576.0 1306624.0 155059.4    248    3.242
S0C :年轻代中第一个survivor(幸存区)的容量 (字节)
S1C :年轻代中第二个survivor(幸存区)的容量 (字节)
S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
TT:持有次数限制
MTT:最大持有次数限制
DSS:期望的幸存区大小
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU :年轻代中Eden(伊甸园)目前已使用空间 (字节)
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

jstat -gcnewcapacity pid

年轻代对象的信息和占用量

> jstat -gcnewcapacity 18378
  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC 
   84992.0  1355776.0  1355776.0 451584.0  19968.0 451584.0  24576.0  1354752.0  1306624.0   248     5
NGCMN :年轻代(young)中初始化(最小)的大小(字节)
NGCMX :年轻代(young)的最大容量 (字节)
NGC :年轻代(young)中当前的容量 (字节)
S0CMX :年轻代中第一个survivor(幸存区)的最大容量 (字节)
S0C :年轻代中第一个survivor(幸存区)的容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
FGC:从应用程序启动到采样时old代(全gc)gc次数

jstat -gcold pid

old代对象信息

> jstat -gcold 18378
   MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT   
145024.0 111038.1  20608.0  12953.0    344064.0    162323.8    248     5    0.794    4.036
MC :metaspace(元空间)的容量 (字节)
MU:metaspace(元空间)目前已使用空间 (字节)
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

jstat -gcoldcapacity pid

old代对象信息及其占用量

> jstat -gcoldcapacity 18378
   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT   
   171008.0   2711552.0    344064.0    344064.0   248     5    0.794    4.036
OGCMN :old代中初始化(最小)的大小 (字节)
OGCMX :old代的最大容量(字节)
OGC :old代当前新生成的容量 (字节)
OC :Old代的容量 (字节)
YGC :从应用程序启动到采样时年轻代中gc次数
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

jstat -gcutil pid

统计GC信息

> jstat -gcutil 18378
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
 99.86   0.00  49.82  47.18  76.57  62.85    248    3.242     5    0.794    4.036
S0 :年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1 :年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E :年轻代中Eden(伊甸园)已使用的占当前容量百分比
O :old代已使用的占当前容量百分比
P :perm代已使用的占当前容量百分比
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

jstat -gccause pid

显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因。

> jstat -gccause 18378
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC                 
 99.86   0.00  50.26  47.18  76.57  62.85    248    3.242     5    0.794    4.036 Allocation Failure   No GC
LGCC:最后一次GC原因
GCC:当前GC原因(No GC 为当前没有执行GC)

jstat -printcompilation pid

当前JVM执行信息

> jstat -printcompilation 18378
Compiled  Size  Type Method
   29469     44    1 hudson/util/LogTaskListener$LogOutputStream <init>
Compiled :编译任务的数目
Size :方法生成的字节码的大小
Type:编译类型
Method:类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的
wx.jpg

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JVM 监控,调优,调试

    Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下:

    大道七哥
  • 性能测试必备监控技能jvm之jdk命令行工具篇16

    前言 对于JVM的性能监控,主要注意以下关键参数,通过jdk自带的命令行工具,即可查看相关参数,从而分析系统或目标服务程序中存在的性能瓶颈 jps JVM Pr...

    苦叶子
  • JVM 监控 1

    服务监控是一个服务中非常重要的组成部分,直接决定了问题的发现及排查速度,并且从一定程度上提高服务一个周期内的可用性。在Java服务中,除了对于 业务、接口耗时&...

    邹志全
  • 测者的性能测试手册:JVM的监控利器

    每次聊起性能测试,最后的终结话题就是怎么做优化。其实在Java的复杂项目中都会有内存不足问题、内存泄露问题、线程死锁问题、CPU问题。这些问题功能测试或者是小压...

    Criss@陈磊
  • jstat的用法

    出处:http://www.51testing.com/?uid-77492-action-viewspace-itemid-203728

    全栈程序员站长
  • jvm分析工具和查看命令

    与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。

    java思维导图
  • JDK监控和故障处理工具总结

    jps(JVM Process Status) 命令类似 UNIX 的 ps 命令。

    Vincent-yuan
  • 那个小白还没搞懂内存溢出,只能用案例说给他听了

    内存溢出,通俗的理解,就是你要求分配的内存超出了JVM能给你的,JVM不能满足需求,于是产生溢出。 为了便于理解,本文我们将使用一个案例来说明内存溢出。

    田维常
  • Java 开发必须掌握的线上问题排查命令

    作为一个合格的开发人员,不仅要能写得一手还代码,还有一项很重要的技能就是排查问题。这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上...

    哲洛不闹
  • jvm调优

    查看java程序运行的环境参数,包括Java System属性和JVM命令行参数.。

    IT云清
  • Java 线程调优 JDK常用命令行工具 Jstack & Arthas使用笔记 查找耗时线程

    jps(JVM Process Status) 命令类似 UNIX 的 ps 命令。

    大鹅
  • java 调优概要

    分为两类,一种是boolean类型,设置生效不生效,另一类是设置值。-XX:<name>=<value>

    birdskyws
  • JVM性能调优-命令行工具jps/jstat/jinfo/jmap/jhat/jstack/jcmd

    类似Linux的ps,但jps只列出Java的进程。可方便查看Java进程的启动类、传入参数和JVM参数。直接运行,不加参数,列出Java程序的进程ID及Mai...

    JavaEdge
  • java:线上问题排查常用手段

    然后执行 jmap -histo:live 7320 (注:如果输出内容太多,只想看排名前10的,可以加 | head -10)

    菩提树下的杨过
  • 【日活百万电商返利App】一次线上JVM问题定位排查

    查看进程使用gc情况: jstat -gc 16969<pid> 5000(打印时间间隔)

    用户2032165
  • Java虚拟机(五):JVM调优命令

    运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM...

    朝雨忆轻尘
  • 《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具

    虚拟机性能监控与故障处理工具 详解 4.1 概述 本文参考的是周志明的 《深入理解Java虚拟机》 第四章 ,为了整理思路,简单记录一下,方便后期查阅。 JDK...

    搜云库
  • JVM-7.JVM 性能监控 jdk命令

    列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class)名称,一级这些进程的本地虚拟机唯一ID(Local Virtual Machine Ide...

    悠扬前奏
  • 以线上实例来看,内存泄漏的图文解决方案!

    项目上线了一个接口,先灰度一台机器观察调用情况; 接口不断的调用,过了一段时间,发现机器上的接口调用开始报OOM异常 ! 当天就是上线deadline了,刺...

    洋仔聊编程

扫码关注云+社区

领取腾讯云代金券