Hi!请登陆

jvm的jstat命令详解

2021-1-15 15 1/15

Jstat是JDK自带的一个轻量级小工具。

主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。

用以判断JVM是否存在内存问题。

jstat命令命令格式: jstat [Options] vmid [interval] [count]

命令参数说明:

Options,一般使用 -gcutil 或 -gc 查看gc 情况

pid,当前运行的 java进程号

interval,间隔时间,单位为秒或者毫秒

count,打印次数,如果缺省则打印无数次

Options 参数如下:

-gc:统计 jdk gc时 heap信息,以使用空间字节数表示

-gcutil:统计 gc时, heap情况,以使用空间的百分比表示

-class:统计 class loader行为信息

-compiler:统计编译行为信息

-gccapacity:统计不同 generations(新生代,老年代,持久代)的 heap容量情况

-gccause:统计引起 gc的事件

-gcnew:统计 gc时,新生代的情况

-gcnewcapacity:统计 gc时,新生代 heap容量

-gcold:统计 gc时,老年代的情况

-gcoldcapacity:统计 gc时,老年代 heap容量

-gcpermcapacity:统计 gc时, permanent区 heap容量

Jstat全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下。Jstat有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。

使用 jps -l 命令查看运行的java程序的 pid 找到你要监控的那个,这里是1507。

jstat -gc pid

这里打印出了到当前时间jvm的gc情况。

jstat -gc 1507 3000 5

每隔3000秒打印一次 总共打印5次

S0C:第一个幸存区的容量大小

S1C:第二个幸存区的容量大小

S0U:第一个幸存区的使用大小

S1U:第二个幸存区的使用大小

EC:伊甸园区的容量大小

EU:伊甸园区的使用大小

OC:老年代容量大小

OU:老年代使用大小

MC:方法区容量大小

MU:方法区使用大小

CCSC:压缩类空间容量大小

CCSU:压缩类空间使用大小

YGC:年轻代垃圾回收次数

YGCT:年轻代垃圾回收消耗时间

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间

GCT:垃圾回收消耗总时间

jstat -gcutil pid

跟-gc一样,不过是显示内存使用的百分比。

jstat-class pid

显示加载class的数量,及所占空间等信息

jstat-compiler pid

显示VM实时编译的数量等信息。

jstat -gccapacity pid

显示JVM内存中各代对象的使用和占用大小。

NGCMN:新生代最小容量

NGCMX:新生代最大容量

NGC:当前新生代容量

S0C:第一个幸存区大小

S1C:第二个幸存区的大小

EC:伊甸园区的大小

OGCMN:老年代最小容量

OGCMX:老年代最大容量

OGC:当前老年代大小

OC:当前老年代大小

MCMN:最小元数据容量

MCMX:最大元数据容量

MC:当前元数据空间大小

CCSMN:最小压缩类空间大小

CCSMX:最大压缩类空间大小

CCSC:当前压缩类空间大小

YGC:年轻代gc次数

FGC:老年代GC次数

jstat -gccause pid

监视Java堆状况,包括Eden区、两个survivor区、老年代等的容量、已用空间、GC时间合计等信息、导致上一次GC产生的原因

jstat -gcnewpid

显示年轻代对象的信息。

jstat -gcnewcapacity pid

统计 gc时,新生代 heap容量 。

jstat -gcold pid

统计 gc时,老年代的情况 。

jstat-gcoldcapacitypid

统计 gc时,老年代 heap容量 。

相关推荐