JVM 性能调优监控工具之jstat(JVM统计监测工具)

JVM 性能调优监控工具之jstat(JVM统计监测工具)



前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是jstat?

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,中文名字“java虚拟机统计信息工具”。

二、简介

Jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。
Jstat可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间(来自百度百科)。

2.语法格式如下

代码如下(示例):

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

参数说明:
vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID。
interval是采样时间间隔。
count是采样数目。
比如下面输出的是GC信息,采样时间间隔为200ms,采样数为5:
命令:jstat -gc 11237 200 5

root@LENOVO-LA0X1516:/# jstat -gc 11237 200 5
S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT
182.0  182.0   54.0   0.0    5411.0   1874.9   34000.0     3997.6   54343.0 25348.5    698    0.503   4      0.403    0.512
182.0  182.0   54.0   0.0    5411.0   1998.2   34000.0     3997.6   54343.0 25348.5    698    0.503   4      0.403    0.512
182.0  182.0   54.0   0.0    5411.0   1956.2   34000.0     3997.6   54343.0 25348.5    698    0.503   4      0.403    0.512
182.0  182.0   54.0   0.0    5411.0   2569.7   34000.0     3997.6   54343.0 25348.5    698    0.503   4      0.403    0.512
182.0  182.0   54.0   0.0    5411.0   2569.7   34000.0     3997.6   54343.0 25348.5    698    0.503   4      0.403    0.512

要明白上面各列的意义,先看JVM堆内存布局:
在这里插入图片描述
可以看出:

堆内存 = 年轻代 + 年老代 + 永久代
年轻代 = Eden区 + 两个Survivor区(From和To)

现在来解释各列含义:

S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时

总结

这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。

猜你喜欢

转载自blog.csdn.net/zhx__/article/details/121440822