2015年6月9日星期二

Java_022:JDK 自带小工具介绍之五:jstat

环境:MAC OS X 10.10.3 + Oracle JDK 1.7.0_80

jstat 可以观察到 classloader,compiler,gc相关信息。

1. 命令语法

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数解释:
(1)options:选项,比如 -gcutil
(2)vmid:当前运行的java进程号 
(3)interval:间隔时间,单位为秒或者毫秒 
(4)count:打印次数,如果缺省则打印无数次

2. options 参数说明
(1)-class:统计class loader行为信息
(2)-compile:统计编译行为信息
(3)-gc:统计jdk gc时heap信息
(4)-gccapacity:统计不同的代相应的heap容量情况
(5)-gccause:统计gc的情况,(同-gcutil)和引起gc的事件
(6)-gcnew:统计gc时,新生代的情况
(7)-gcnewcapacity:统计gc时,新生代heap容量
(8)-gcold:统计gc时,老年区的情况
(9)-gcoldcapacity:统计gc时,老年区heap容量
(10)-gcpermcapacity:统计gc时,permanent区heap容量
(11)-gcutil:统计gc时,heap情况
(12)-printcompilation:

3. 使用例子
(1)jstat -class 28218 3000 10
查看进程 28218 classloader 的情况,每 3 秒输出一次,输出 10 次。
Loaded  Bytes  Unloaded  Bytes     Time  
  8664 17500.9        0     0.0       7.35
  8664 17500.9        0     0.0       7.35

(2)jstat -gc 28218 3000 10
查看进程 28218 gc 的情况,每 3 秒输出一次,输出 10 次。
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT  
41472.0 1536.0  0.0   1472.0 367104.0 273200.3  889856.0   17311.6   48640.0 48299.9      7    0.280   0      0.000    0.280

输出参数说明:
  • S0C:Heap上的 Survivor space 0 区空间大小(KB) 
  • S1C:Heap上的 Survivor space 1 区空间大小(KB) 
  • S0U:Heap上的 Survivor space 0 区已使用空间大小(KB) 
  • S1U:Heap上的 Survivor space 1 区已使用空间大小(KB) 
  • EC:Heap上的 Eden space 区空间大小(KB)
  • EU:Heap上的 Eden space 区已使用空间大小(KB) 
  • OC:Heap上的 Old space 区空间大小(KB)
  • OU:Heap上的 Old space 区已使用空间大小(KB) 
  • PC:Perm space 区空间大小(KB)
  • PU:Perm space 区已使用空间大小(KB)
  • YGC:从应用程序启动到采样时发生 Young GC 的次数 
  • YGCT:从应用程序启动到采样时 Young GC 所用的时间(单位秒)
  • FGC:从应用程序启动到采样时发生 Full GC 的次数 
  • FGCT:从应用程序启动到采样时 Full GC 所用的时间(单位秒)
  • GCT:从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
 (3)jstat -gcutil -h 10  6050 1000
查看进程 6050 gc 和 heap 的情况,每 1 秒输出一次,输出无数次。

参考文献:
1. http://www.cnblogs.com/alipayhutu/archive/2012/08/20/2647353.html 
2. https://dzone.com/articles/how-monitor-java-garbage

没有评论: