jstat :对VM内存使用量进行监控。  

   jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。  

   jstat -class pid:显示加载class的数量,及所占空间等信息。  

   jstat -compiler pid:显示VM实时编译的数量等信息。  

   jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。  

   jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。  

   jstat -gcnew pid:new对象的信息。  

   jstat -gcnewcapacity pid:new对象的信息及其占用量。  

   jstat -gcold pid:old对象的信息。  

   jstat -gcoldcapacity pid:old对象的信息及其占用量。  

   jstat -gcpermcapacity pid: perm对象的信息及其占用量。  

   jstat -util pid:统计gc信息统计。  

   jstat -printcompilation pid:当前VM执行的信息。  

   除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 30242506是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。  

   语法结构:  

   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 — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)