您的位置:首页 > Web前端 > JavaScript

二,JVM 自带命令行工具之JStat

2013-12-19 01:00 211 查看
jstat:虚拟机统计信息见识工具

jstat是用于见识虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

jstat option vmid [interval[s|ms] [count]]





E表示Eden;

s1,s1表示survivor0,survivor1;

老年代o表示old,永久代p表示permanent

程序运行以来供放生Minor GC(YGC,表示Yong GC)122次,总耗时0.392,发生Full GC(FGC,表示Full GC)6次,(FGCT)总耗时为0.666。

不同的统计维度(statOption)及输出说明

-class

类加载情况的统计

列名说明
Loaded加载了的类的数量
Bytes加载了的类的大小,单为Kb
Unloaded卸载了的类的数量
Bytes卸载了的类的大小,单为Kb
Time花在类的加载及卸载的时间



-compiler

HotSpot中即时编译器编译情况的统计

列名说明
Compiled编译任务执行的次数
Failed编译任务执行失败的次数
Invalid编译任务非法执行的次数
Time执行编译花费的时间
FailedType最后一次编译失败的编译类型
FailedMethod最后一次编译失败的类名及方法名


-gc

JVM中堆的垃圾收集情况的统计

列名说明
S0C新生代中Survivor space中S0当前容量的大小(KB)
S1C新生代中Survivor space中S1当前容量的大小(KB)
S0U新生代中Survivor space中S0容量使用的大小(KB)
S1U新生代中Survivor space中S1容量使用的大小(KB)
ECEden space当前容量的大小(KB)
EUEden space容量使用的大小(KB)
OCOld space当前容量的大小(KB)
OUOld space使用容量的大小(KB)
PCPermanent space当前容量的大小(KB)
PUPermanent space使用容量的大小(KB)
YGC从应用程序启动到采样时发生 Young GC 的次数
YGCT从应用程序启动到采样时 Young GC 所用的时间(秒)
FGC从应用程序启动到采样时发生 Full GC 的次数
FGCT从应用程序启动到采样时 Full GC 所用的时间(秒)
GCTT从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC


-gccapacity

新生代、老生代及持久代的存储容量情况

列名说明
NGCMN新生代的最小容量大小(KB)
NGCMX新生代的最大容量大小(KB)
NGC当前新生代的容量大小(KB)
S0C当前新生代中survivor space 0的容量大小(KB)
S1C当前新生代中survivor space 1的容量大小(KB)
ECEden space当前容量的大小(KB)
OGCMN老生代的最小容量大小(KB)
OGCMX老生代的最大容量大小(KB)
OGC当前老生代的容量大小(KB)
OC当前老生代的空间容量大小(KB)
PGCMN持久代的最小容量大小(KB)
PGCMX持久代的最大容量大小(KB)
PGC当前持久代的容量大小(KB)
PC当前持久代的空间容量大小(KB)
YGC从应用程序启动到采样时发生 Young GC 的次数
FGC从应用程序启动到采样时发生 Full GC 的次数
JVM配置:-Xms10m -Xmx10m -Xss128k -XX:PermSize=10M -XX:MaxPermSize=10M

打印结果



-gccause

这个选项用于查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因,它比-gcutil会多出最后一次垃圾收集原因以及当前正在发生的垃圾收集的原因。

用于查看垃圾收集的统计情况,包括最近发生垃圾的原因

列名说明
LGCC最后一次垃圾收集的原因,可能为“unknown GCCause”、“System.gc()”等
GCC当前垃圾收集的原因


-gcnew

新生代垃圾收集的情况

列名说明
S0C当前新生代中survivor space 0的容量大小(KB)
S1C当前新生代中survivor space 1的容量大小(KB)
S0US0已经使用的大小(KB)
S1US1已经使用的大小(KB)
TTTenuring threshold,要了解这个参数,我们需要了解一点Java内存对象的结构,在Sun JVM中,(除了数组之外的)对象都有两个机器字(words)的头部。第一个字中包含这个对象的标示哈希码以及其他一些类似锁状态和等标识信息,第二个字中包含一个指向对象的类的引用,其中第二个字节就会被垃圾收集算法使用到。
在新生代中做垃圾收集的时候,每次复制一个对象后,将增加这个对象的收集计数,当一个对象在新生代中被复制了一定次数后,该算法即判定该对象是长周期的对象,把他移动到老生代,这个阈值叫着tenuring threshold。这个阈值用于表示某个/些在执行批定次数youngGC后还活着的对象,即使此时新生的的Survior没有满,也同样被认为是长周期对象,将会被移到老生代中。
MTTMaximum tenuring threshold,用于表示TT的最大值。
DSSDesired survivor size (KB).可以参与这里:http://blog.csdn.net/yangjun2/article/details/6542357
ECEden space当前容量的大小(KB)
EUEden space已经使用的大小(KB)
YGC从应用程序启动到采样时发生 Young GC 的次数
YGCT从应用程序启动到采样时 Young GC 所用的时间(单位秒)


-gcnewcapacity

新生代的存储容量情况

列名说明
NGCMN 新生代的最小容量大小(KB)
NGCMX 新生代的最大容量大小(KB)
NGC 当前新生代的容量大小(KB)
S0CMX新生代中SO的最大容量大小(KB)
S0C当前新生代中SO的容量大小(KB)
S1CMX新生代中S1的最大容量大小(KB)
S1C当前新生代中S1的容量大小(KB)
ECMX新生代中Eden的最大容量大小(KB)
EC当前新生代中Eden的容量大小(KB)
YGC从应用程序启动到采样时发生 Young GC 的次数
FGC从应用程序启动到采样时发生 Full GC 的次数



-gcold

老生代及持久代发生GC的情况

列名说明
PC当前持久代容量的大小(KB)
PU持久代使用容量的大小(KB)
OC当前老年代容量的大小(KB)
OU老年代使用容量的大小(KB)
YGC从应用程序启动到采样时发生 Young GC 的次数
FGC从应用程序启动到采样时发生 Full GC 的次数
FGCT从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC


-gcoldcapacity

老生代的存储容量情况

列名说明
OGCMN老生代的最小容量大小(KB)
OGCMX老生代的最大容量大小(KB)
OGC当前老生代的容量大小(KB)
OC当前新生代的空间容量大小(KB)
YGC从应用程序启动到采样时发生 Young GC 的次数
FGC从应用程序启动到采样时发生 Full GC 的次数
FGCT从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC

-gcpermcapacity

从应用程序启动到采样时发生 Full GC 的次数

持久代的存储容量情况

列名说明
PGCMN持久代的最小容量大小(KB)
PGCMX持久代的最大容量大小(KB)
PGC当前持久代的容量大小(KB)
PC当前持久代的空间容量大小(KB)
YGC从应用程序启动到采样时发生 Young GC 的次数
FGC
FGCT从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC

-gcutil(这个经常用到)

新生代、老生代及持代垃圾收集的情况

列名说明
S0Heap上的 Survivor space 0 区已使用空间的百分比
S1Heap上的 Survivor space 1 区已使用空间的百分比
EHeap上的 Eden space 区已使用空间的百分比
OHeap上的 Old space 区已使用空间的百分比
PPerm space 区已使用空间的百分比
YGC从应用程序启动到采样时发生 Young GC 的次数
YGCT从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC从应用程序启动到采样时发生 Full GC 的次数
FGCT从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC


-printcompilation

HotSpot编译方法的统计

列名说明
Compiled编译任务执行的次数
Size方法的字节码所占的字节数
Type编译类型
Method指定确定被编译方法的类名及方法名,类名中使名“/”而不是“.”做为命名分隔符,方法名是被指定的类中的方法,这两个字段的格式是由HotSpot中的“-XX:+PrintComplation”选项确定的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: