日期:2014-05-16  浏览次数:20344 次

jstat使用
注:
用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显

一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

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

?

1. jstat -gc pid

可以显示gc的信息,查看gc的次数,及时间。

其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。

2.jstat -gccapacity pid
??????????? 可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,

??????????? 如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,

??????????? PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。

??????????? 其他的可以根据这个类推, OC是old内纯的占用量。

3.jstat -gcutil pid

??????????? 统计gc信息统计。

4.jstat -gcnew pid

?????????? 年轻代对象的信息。

5.jstat -gcnewcapacity pid

?????????? 年轻代对象的信息及其占用量。

6.jstat -gcold pid

????????? old代对象的信息。

7.stat -gcoldcapacity pid

????????? old代对象的信息及其占用量。

8.jstat -gcpermcapacity pid

????????? perm对象的信息及其占用量。

9.jstat -class pid

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

????????? 显示VM实时编译的数量等信息。

11.stat -printcompilation pid

????????? 当前VM执行的信息。

??????? 一些术语的中文解释:

???????? S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
???????? S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
???????? S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
???????? S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
?????????? EC:年轻代中Eden(伊甸园)的容量 (字节)
?????????? EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
?????????? OC:Old代的容量 (字节)
?????????? OU:Old代目前已使用空间 (字节)
?????????? PC:Perm(持久代)的容量 (字节)
?????????? PU:Perm(持久代)目前已使用空间 (字节)
???????? YGC:从应用程序启动到采样时年轻代中gc次数
?????? YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
???????? FGC:从应用程序启动到采样时old代(全gc)gc次数
?????? FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
???????? GCT:从应用程序启动到采样时gc用的总时间(s)

??? NGCMN:年轻代(young)中初始化(最小)的大小 (字节)

??? NGCMX:年轻代(young)的最大容量 (字节)

??????? NGC:年轻代(young)中当前的容量 (字节)

?? OGCMN:old代中初始化(最小)的大小 (字节)

?? OGCMX:old代的最大容量 (字节)

?????? OGC:old代当前新生成的容量 (字节)

?? PGCMN:perm代中初始化(最小)的大小 (字节)

?? PGCMX:perm代的最大容量 (字节)??

?????? PGC:perm代当前新生成的容量 (字节)

????????? S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

???????? S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

?????????? E:年轻代中Eden(伊甸园)已使用的占当前容量百分比

?????????? O:old代已使用的占当前容量百分比

?????????? P:perm代已使用的占当前容量百分比

? S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)

?S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)

??? ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)

?????? DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)

????????? TT: 持有次数限制

?????? MTT : 最大持有次数限制

?

?

使用:?
linux 先查找到java进程的pid
ps -ef | grep java
例:pid : 10000
jstat -gcpermcapacity 10000 1000
?

?

转:

http://www.2cto.com/kf/201109/105988.html

http://xueliang880107.iteye.com/blog/954073

?

?