查看 jvm gc情况,使用JDK自带jstat

需要查询当前JAVA的PID

windows环境,任务管理器-》菜单-》 查看-》选择列-》勾选PID 既可以在列表中查看

linux环境,终端执行 pgrep -l java ,前面的编号既是PID。

 jstat

jstat是一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。

 
语法结构如下: 
Usage: jstat -help|-options 
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] 
参数解释: 
Options — 选项,我们一般使用 -gcutil 查看gc情况 
vmid    — VM的进程号,即当前运行的java进程号 
interval– 间隔时间,单位为秒或者毫秒 
count   — 打印次数,如果缺省则打印无数次 
S0  — Heap上的 Survivor space 0 区已使用空间的百分比 
S1  — Heap上的 Survivor space 1 区已使用空间的百分比 
E   — Heap上的 Eden space 区已使用空间的百分比 
O   — Heap上的 Old space 区已使用空间的百分比 
P   — Perm space 区已使用空间的百分比 
YGC — 从应用程序启动到采样时发生 Young GC 的次数 
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒) 
FGC — 从应用程序启动到采样时发生 Full GC 的次数 
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒) 
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒) 

 

实例:cd Java\jdk1.7.0_17\bin 目录

执行 cmd : jstat -gcutil 7012(PID) 1000(多长时间采样一次ms) 100(采样次数)

C:\Program Files\Java\jdk1.7.0_17\bin>jstat -gcutil 7216 1000 10
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050
  0.00  16.69  75.61   6.29  71.63     19    0.050     0    0.000    0.050