疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

常用的jvm性能监控工具


 

  jdk自身附带了很多实用的工具,以下是常用的几个:

  1.jps:显示所有的虚拟机进程

  -q:只列出id号

  -m:id号和主类以及传递给主类的参数

  -l:id号及主类的全名

  -v:id号,主类,及完整的虚拟机启动参数

  2.jstat:虚拟机统计信息监控

  参考:http://blog.163.com/yangshuo_qq/blog/static/2554680201272871350110/

  jstat -gc pid

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

  jstat -gc pid interval count

  每隔interval时间,总共count次,显示gc的信息,查看gc的次数,及时间。interval:毫秒

  [root@redhat4 work]# jstat -gc 6910 1000 10 每隔1000毫秒查询10次

  S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT

  128.0 128.0 22.6 0.0 1536.0 1248.0 3456.0 3443.0 12288.0 5963.0 28 0.128 1 0.199 0.327

  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 : 最大持有次数限制

  3.jinfo:jvm配置信息

  [root@redhat4 work]# jinfo -flag CMSInitiatingOccupancyFraction 6910

  -XX:CMSInitiatingOccupancyFraction=-1

  4.jmap:生成内存快照

  [root@redhat4 work]# jmap -dump:format=b,file=tomcat.bin 6910

  Dumping heap to /work/tomcat.bin ...

  Heap dump file created

  5.jhat:快照内存分析工具

  [root@redhat4 work]# jhat tomcat.bin

  Reading from tomcat.bin...

  Dump file created Mon Apr 15 11:15:27 CST 2013

  Snapshot read, resolving...

  Resolving 120986 objects...

  Chasing references, expect 24 dots........................

  Eliminating duplicate references........................

  Snapshot resolved.

  Started HTTP server on port 7000

  Server is ready.

  看到Server is ready.说明已经分析完毕,通过浏览器http://localhost:7000可以进行浏览分析结果。

  这个工具比较不好看,更方便的分析工具是使用eclipse的插件mat:

  在eclipse里面选择help->install new software->Update Site: http://download.eclipse.org/mat/1.2/update-site/

  参考:http://chiyx.iteye.com/blog/1528782

  6.jstack:生成堆栈快照

  -F:当正常输入的请求不被响应的时候,强制输出线程堆栈

  -l:除了堆栈以外,显示锁的信息

  -m:如果调用了本地方法,显示本地方法调用堆栈

  可以用来查看死循环啊,死锁之类。

  也可以用代码直接打印。

  ps:这些东西并不难,面试总是被问到,整理一下!