查看原文
其他

你了解 Java 的 jstat 命令吗?

程序猿DD 2021-05-26

点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!


来源 | https://my.oschina.net/lowkeysoft/blog/1821826

作用

jstat 工具用于检测到的 Java 虚拟机 (JVM) 的性能统计信息,比如GC、内存大小、编译时间等。

命令格式

jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]

generalOption:

jstat -help|-options

执行 jstat -options命令后各个选项,见下面

选项描述
-class类加载行为的统计信息
-compiler即时编译热点行为的统计
-gc堆行为的统计
-gcutil和GC一样,但输出主要关注已使用空间占总空间的百分比
-gccapacityJava堆各个区域使用到的最大和最小空间
-gccause垃圾回收统计信息 (和 gcutil 相同) , 最后和当前 垃圾回收事件
-gcmetacapacity输出永久代使用到的最大和最小空间
-gcnew新生代的统计
-gcnewcapacity同上,顺带输出主要关注使用到的最大和最小空间
-gcold年老代和永生代行为统计
-gcoldcapacity年老代行为统计
-printcompilation输出已经被JIT编译的方法

outputOptions:

一个或多个输出选项, 包括单个 stat选项, 加上任何-t、h 和 J 选项

vmid:

虚拟机标识符 进程id

ps -ef | grep java

或者

jps -l

interval:

采样间隔在指定的单位,秒(s)或毫秒(ms)。默认单位是毫秒。必须是正整数。如果指定,JSTAT将在每个间隔产生其输出

count:

显示的次数。默认值是无穷大;也就是说,JSTAT显示统计数据,直到目标JVM终止或JSTAT命令终止。必须是正整数

例子

-class选项

输入

jstat -class 29271 1000 20

输出

Loaded  Bytes  Unloaded  Bytes     Time
 22182 42401.0      638   847.4      39.52
 22182 42401.0      638   847.4      39.52
描述
loaded已经装载的数据量
bytes装载的字节数
unloaded卸载类的数量
bytes卸载类的字节数
time装载和卸载所花费的时间

-compiler选项

输入

jstat -compiler 29271 1000 20

输出

Compiled Failed Invalid   Time   FailedType FailedMethod
    6663      3       0   108.64          1 org/apache/jasper/xmlparser/ParserUtils convert
    6663      3       0   108.64          1 org/apache/jasper/xmlparser/ParserUtils convert
描述
Compiled编译任务执行数量
Failed编译任务执行失败的数量
Invalid失效的数量
Time花费的时间
FailedType失败任务的类型
FailedMethod失败任务的方法

-gc选项

输入

jstat -gc 29271 1000 20

输出

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT
4096.0 4096.0  0.0   3088.4 691200.0 85378.5  1398272.0   337712.4  262144.0 121554.1  25374  413.439   7      5.536  418.975
4096.0 4096.0  0.0   3088.4 691200.0 85727.0  1398272.0   337712.4  262144.0 121554.1  25374  413.439   7      5.536  418.975
描述
S0C第一个survivor的容量
S1C第二个survivor的容量
S0U第一个survivor的使用情况
S1U第二个survivor的使用情况
ECEden区的总容量
EUEden区已使用的容量
OCOld区的总容量
OUOld区已使用的容量
PC当前perm的容量 (KB)
PUperm的使用 (KB)
YGC新生代垃圾回收次数
YGCT新生代垃圾回收时间
FGC老年代垃圾回收次数
FGCT老年代垃圾回收时间
GCT垃圾回收总消耗时间

-gcutil选项

输入

jstat -gcutil 29271 1000 20

输出

 S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 83.70   0.00  62.04  24.11  46.37  25373  413.423     7    5.536  418.958
 83.70   0.00  62.06  24.11  46.37  25373  413.423     7    5.536  418.958
描述
S0第一个survivor的容量
S1第二个survivor的容量
EEden区的总容量
OOld区的总容量
P当前perm的容量 (KB)
YGC新生代垃圾回收次数
YGCT新生代垃圾回收时间
FGC老年代垃圾回收次数
FGCT老年代垃圾回收时间
GCT垃圾回收总消耗时间

-gccapacity选项

输入

jstat -gccapacity 29271 1000 20

输出

NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC
699392.0 699392.0 699392.0 4096.0 4096.0 691200.0  1398272.0  1398272.0  1398272.0  1398272.0 262144.0 262144.0 262144.0 262144.0  25374     7
699392.0 699392.0 699392.0 4096.0 4096.0 691200.0  1398272.0  1398272.0  1398272.0  1398272.0 262144.0 262144.0 262144.0 262144.0  25374     7
描述
NGCMN年轻代初始容量(kb)
NGCMX年轻代最大容量(kb)
NGC年轻代当前容量
S0C幸存区1当前容量 (KB)
S1C幸存区2容量 (KB)
EC伊甸区容量
OGCMN老年代初始容量(kb)
OGCMX老年代最大容量(kb)
OGC当前老年代容量
OCOld代的容量
PGCMNperm代中初始化(最小)的大小
PGCMXperm代的最大容量
PGCperm代的当前容量
PC持久代容量
YGCyfc次数
FGCfgc次数

-gccause选项

输入

jstat -gccause 29271 1000 20

输出

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
  0.00  75.40  72.95  24.15  46.37  25374  413.439     7    5.536  418.975 Allocation Failure   No GC
  0.00  75.40  73.03  24.15  46.37  25374  413.439     7    5.536  418.975 Allocation Failure   No GC
描述
S0第一个survivor的容量
S1第二个survivor的容量
EEden区的总容量
OOld区的总容量
P当前perm的容量 (KB)
YGC新生代垃圾回收次数
YGCT新生代垃圾回收时间
FGC老年代垃圾回收次数
FGCT老年代垃圾回收时间
GCT垃圾回收总消耗时间
LGCC最近垃圾回收的原因
GCC当前垃圾回收的原因

-gcnew选项

输入

jstat -gcnew 29271 1000 20

输出

 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
4096.0 4096.0    0.0 3088.4  1  15 4096.0 691200.0 588124.7  25374  413.439
4096.0 4096.0    0.0 3088.4  1  15 4096.0 691200.0 588759.6  25374  413.439
描述
S0C第一个survivor的容量
S1C第二个survivor的容量
S0U第一个survivor的使用情况
S1U第二个survivor的使用情况
TT最大持有次数限制
MTT第二个survivor的使用情况
DSS期望的幸存者大小
ECEden区的总容量
EUEden区已使用的容量
YGC新生代垃圾回收次数
YGCT新生代垃圾回收时间

-gcnewcapacity选项

输入

jstat -gcnewcapacity 29271 1000 20

输出

  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
  699392.0   699392.0   699392.0 232960.0   4096.0 232960.0   4096.0   698368.0   691200.0 25374     7
  699392.0   699392.0   699392.0 232960.0   4096.0 232960.0   4096.0   698368.0   691200.0 25374     7
描述
NGCMN年轻代初始容量(kb)
NGCMX年轻代最大容量(kb)
NGC年轻代当前容量
S0CMX幸存区1最大容量 (KB)
S0C幸存区1当前容量 (KB)
S1CMX幸存区1最大容量 (KB)
S1C幸存区2容量 (KB)
ECMX伊甸区最大容量
EC伊甸区容量
YGCyfc次数
FGCfgc次数

-gcold选项

输入

jstat -gcold 29271 1000 20

输出

   PC       PU        OC          OU       YGC    FGC    FGCT     GCT
262144.0 121554.1   1398272.0    337896.5  25375     7    5.536  418.995
262144.0 121554.1   1398272.0    337896.5  25375     7    5.536  418.995
描述
PC持久化容量
PU持久化使用容量
OC老年区容量
OU老年区使用容量
YGC新生代垃圾回收次数
YGCT新生代垃圾回收时间
FGC老年代垃圾回收次数
FGCT老年代垃圾回收时间

-gcoldcapacity选项

输入

jstat -gcoldcapacity 29271 1000 20

输出

   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
  1398272.0   1398272.0   1398272.0   1398272.0 25373     7    5.536  418.958
  1398272.0   1398272.0   1398272.0   1398272.0 25373     7    5.536  418.958
描述
OGCMN老年代中初始化容量
OGCMX老年代中最大容量
OGC老年区当前容量
OCOld代的容量
YGCygc次数
FGCfgc次数
FGCTfgc花费时间
GCTgc的总时间

-printcompilation选项

输入

jstat -printcompilation 29271 1000 20

输出

Compiled  Size  Type Method
    6663   3093    1 com/alibaba/dubbo/registry/support/FailbackRegistry retry
    6663   3093    1 com/alibaba/dubbo/registry/support/FailbackRegistry retry
描述
Compiled编译任务的数目
Size方法生成字节码大小
Type编译类型
Method编译方法

参考文档

https://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html#general_options


DD自研的沪牌代拍业务,点击直达


往期推荐

Git 提交代码之后的几种后悔药

为什么大多数IOC容器使用ApplicationContext,而不用BeanFactory

JIRA、Confluence等产品明年2月停售本地化版本,将影响中国近90%的客户!

妙用 Intellij IDEA 创建临时文件,Git 跟踪不到的那种

国内首个比特币勒索病毒制作者落网,但过程有点好笑...

TIOBE公布11月榜单:Python势不可挡,超越Java !


扫一扫,关注我

一起学习,一起进步

每周赠书,福利不断

深度内容

推荐加入



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存