可以看出上面我列出的命令执行结果为什么有两行呢,这是因为是用不同的jdk版本执行的。
上面是JDK7执行结果,下面是JDK8执行结果,这两个版本之间输出的结果是有差距的,下面,就来分析为什么会产生这种差异。
JDK7和JDK8中JVM堆内存划分差异
如果记性好的童鞋们应该还能记得我上面在介绍JVM堆内存分类的时候括号里写的那个东东吧,没错,就是这个东西导致的。在JDK7中的Perm代(永久代)在JDK8中被废除了,取而代之的是Metadata代(元数据代),据说这个元数据代相对于永久代进行了优化,如果不设置最大值的话,默认会按需增长, 不会造成像Perm代中内存占满后会爆出内存溢出的错误,元数据代也可以设置最大值,这样的话,当内存区域被消耗完的时候将会和Perm代一样爆出内存溢出的错误。(PS:原谅我的班门弄斧,只能解释到这一个层面了。)
好了,解释清楚了JDK7和JDK8的差异以后,接下来我们来解释jstat抓到的这些参数了。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 jstat命令获取参数解析
======================================================================================
* S0C 年轻代中第一个survivor(幸存区)的容量 (字节)jstat -gcnew $pid|tail -1|awk '{print $1*1024}'
* S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)jstat -gcnew $pid|tail -1|awk '{print $3*1024}'
* S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比jstat -gcutil $pid|tail -1|awk '{print $1}'
* S0CMX 年轻代中第一个survivor(幸存区)的最大容量 (字节)jstat -gcnewcapacity $pid|tail -1|awk '{print $4*1024}'
*
* S1C 年轻代中第二个survivor(幸存区)的容量 (字节)jstat -gcnew $pid|tail -1|awk '{print $2*1024}'
* S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)jstat -gcnew $pid|tail -1|awk '{print $4*1024}'
* S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比jstat -gcutil $pid|tail -1|awk '{print $2}'
* S1CMX 年轻代中第二个survivor(幸存区)的最大容量 (字节)jstat -gcnewcapacity $pid|tail -1|awk '{print $6*1024}'
* DSS 当前需要survivor(幸存区)的容量 (字节)(Eden区已满)jstat -gcnew $pid|tail -1|awk '{print $7*1024}'
*
* EC 年轻代中Eden(伊甸园)的容量 (字节)jstat -gcnew $pid|tail -1|awk '{print $8*1024}'
* EU 年轻代中Eden(伊甸园)目前已使用空间 (字节)jstat -gcnew $pid|tail -1|awk '{print $9*1024}'
* ECMX 年轻代中Eden(伊甸园)的最大容量 (字节)jstat -gcnewcapacity $pid|tail -1|awk '{print $8*1024}'
* E 年轻代中Eden(伊甸园)已使用的占当前容量百分比jstat -gcutil $pid|tail -1|awk '{print $3}'
*
* NGCMN 年轻代(young)中初始化(最小)的大小 (字节)jstat -gccapacity $pid|tail -1|awk '{print $1*1024}'
* NGCMX 年轻代(young)的最大容量 (字节)jstat -gccapacity $pid|tail -1|awk '{print $2*1024}'
* NGC 年轻代(young)中当前的容量 (字节)jstat -gccapacity $pid|tail -1|awk '{print $3*1024}'
*
* OC Old代的容量 (字节)jstat -gcold $pid|tail -1|awk '{print $3*1024}'
* OU Old代目前已使用空间 (字节)jstat -gcold $pid|tail -1|awk '{print $4*1024}'
* OGCMX old代的最大容量 (字节)jstat -gccapacity $pid|tail -1|awk '{print $8*1024}'
* OGCMN old代中初始化(最小)的大小 (字节)jstat -gccapacity $pid|tail -1|awk '{print $7*1024}'
* O old代已使用的占当前容量百分比jstat -gcutil $pid|tail -1|awk '{print $4}'
* OGC old代当前新生成的容量 (字节)jstat -gccapacity $pid|tail -1|awk '{print $9*1024}'
*
* PC Perm(持久代)的容量 (字节)jstat -gccapacity $pid|tail -1|awk '{print $14*1024}'
* PU Perm(持久代)目前已使用空间 (字节)jstat -gc $pid|tail -1|awk '{print $10*1024}'
* PGCMX perm代的最大容量 (字节)jstat -gccapacity $pid|tail -1|awk '{print $12*1024}'
* PGCMN perm代中初始化(最小)的大小 (字节)jstat -gccapacity $pid|tail -1|awk '{print $11*1024}'
* P perm代已使用的占当前容量百分比 jstat -gcutil $pid|tail -1|awk '{print $5*1024}'
* PGC perm代当前新生成的容量 (字节)jstat -gccapacity $pid|tail -1|awk '{print $13*1024}'
*
* YGC 从应用程序启动到采样时年轻代中gc次数jstat -gccapacity $pid|tail -1|awk '{print $15}'
* YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)jstat -gcutil $pid|tail -1|awk '{print $7}'
* FGC从应用程序启动到采样时old代(全gc)gc次数jstat -gccapacity $pid|tail -1|awk '{print $16}'
* FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)jstat -gcutil $pid|tail -1|awk '{print $9}'
* GCT 从应用程序启动到采样时gc用的总时间(s)jstat -gcutil $pid|tail -1|awk '{print $10}'
*
* TT 持有次数限制jstat -gcnew $pid|tail -1|awk '{print $5}'
* MTT 最大持有次数限制jstat -gcnew $pid|tail -1|awk '{print $6}'
*
* Loadedjvm加载class数量
* Unloadedjvm未加载class数量
*
* M元数据区使用比例
* MC当前元数据空间大小
* MU元数据空间使用大小
* MCMN最小元数据容量
* MCMX最大元数据容量
*
* CCS压缩使用比例
* CCSC当前压缩类空间大小
* CCSU压缩类空间使用大小
* CCSMN最小压缩类空间大小
* CCSMX最大压缩类空间大小
====================================================
Zabbix使用自动发现功能监控服务器各JVM进程状态(2)
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://www.heiqu.com/6ba62603ccf1355ae41cbdd8c7ccf802.html