当前位置: 首页 > 工具软件 > jStat > 使用案例 >

jstat的主要用法

张智
2023-12-01

jstat主要用来查看当前java进程的各内存区域的使用情况以及GC的次数和总耗时。我最常用的是下面的命令:

jstat -gcutil <pid> [interval] [times]

可以用[interval]来控制每隔多少毫秒重复输出一次,并通过[times]参数来控制输出的总次数。这两个参数都是可以省略的,如果都省略的话,就只输出一次。

下面举例说明以下,输出pid=53560的java进程的内存各区域的利用率,每隔1000毫秒输出一次,共输出五次。

$ jstat -gcutil 53560 1000 5
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00 100.00   4.96   3.23  95.51  93.53      6    0.084     0    0.000    0.084
  0.00 100.00   4.96   3.23  95.51  93.53      6    0.084     0    0.000    0.084
  0.00 100.00   4.96   3.23  95.51  93.53      6    0.084     0    0.000    0.084
  0.00 100.00   4.96   3.23  95.51  93.53      6    0.084     0    0.000    0.084
  0.00 100.00   4.96   3.23  95.51  93.53      6    0.084     0    0.000    0.084

我会重点关注是FullGC的次数和总时间。FGC是FullGC的次数,FGCT是FullGC的总耗时(s)。

另外,简单解释下其它列的含义

  • S0/S1 表示两个survival区的利用率(%)
  • E 表示Eden区的利用率(%)

以上三个区域合在一起就是新生代了。

  • O 表示老年代的利用率(%)
  • M 表示Metaspace的利用率(%)
  • CSS 表示 Compressed class space 的利用率(%)
  • YGC 表示 YounGC的总次数
  • YGCT 表示 YoungGC的总耗时(秒)

如果你想关注各个内存区域的具体大小,而不仅仅是百分比,可以使用jstat -gc,用法相同,例如

$ jstat -gc 53560 1000 5
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
 0.0   13312.0  0.0   13312.0 1156096.0 57344.0   927744.0   29959.0   62976.0 60147.5 8448.0 7901.7      6    0.084   0      0.000    0.084
 0.0   13312.0  0.0   13312.0 1156096.0 57344.0   927744.0   29959.0   62976.0 60147.5 8448.0 7901.7      6    0.084   0      0.000    0.084
 0.0   13312.0  0.0   13312.0 1156096.0 57344.0   927744.0   29959.0   62976.0 60147.5 8448.0 7901.7      6    0.084   0      0.000    0.084
 0.0   13312.0  0.0   13312.0 1156096.0 57344.0   927744.0   29959.0   62976.0 60147.5 8448.0 7901.7      6    0.084   0      0.000    0.084
 0.0   13312.0  0.0   13312.0 1156096.0 57344.0   927744.0   29959.0   62976.0 60147.5 8448.0 7901.7      6    0.084   0      0.000    0.084

列差不多,只是将百分比一分为二了,C结尾的表示总容量(Capacity),U结尾表示已使用的量(Utilization)。单位是KB。

更详细的文档,请参考 oracal官网链接

 类似资料: