收藏本站
博为峰Android开发培训Banner
您所在的位置:博为峰教育首页 > 资料精选 > 学习资料 > 【学习资料】Java监控常用工具

【学习资料】Java监控常用工具

     发布时间:2015年10月20日 13:48分    来源:博为峰教育网采编    关键词:Java常用工具     | 上一篇 | 下一篇 |


 

       具体option参数如下:
       -class:统计class loader行为信息
       -compile:统计编译行为信息
       -gc:统计jdk gc时heap信息
       -gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况
       -gccause:统计gc的情况,(同       -gcutil)和引起gc的事件
       -gcnew:统计gc时,新生代的情况
       -gcnewcapacity:统计gc时,新生代heap容量
       -gcold:统计gc时,老年区的情况
       -gcoldcapacity:统计gc时,老年区heap容量
       -gcpermcapacity:统计gc时,permanent区heap容量
       -gcutil:统计gc时,heap情况

 

       输出内容含义如下:

       S0  — Heap上的 Survivor space 0 区已使用空间的百分比
       S1  — Heap上的 Survivor space 1 区已使用空间的百分比
       E   — Heap上的 Eden space 区已使用空间的百分比
       O   — Heap上的 Old space 区已使用空间的百分比
       P   — Perm space 区已使用空间的百分比
       YGC — 从应用程序启动到采样时发生 Young GC 的次数
       YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
       FGC — 从应用程序启动到采样时发生 Full GC 的次数
       FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
       GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

 

       示例

 

       实例使用1:

       [root@localhost bin]# jstat -gcutil 25444
       S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
       11.63   0.00   56.46  66.92  98.49 162    0.248    6      0.331    0.579

 

       实例使用2:
       [root@localhost bin]# jstat -gcutil 25444 1000 5
       S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
       73.54   0.00  99.04  67.52  98.49    166    0.252     6    0.331    0.583
       73.54   0.00  99.04  67.52  98.49    166    0.252     6    0.331    0.583
       73.54   0.00  99.04  67.52  98.49    166    0.252     6    0.331    0.583
       73.54   0.00  99.04  67.52  98.49    166    0.252     6    0.331    0.583
       73.54   0.00  99.04  67.52  98.49    166    0.252     6    0.331    0.583

 

       我们可以看到,5次young gc之后,垃圾内存被从Eden space区(E)放入了Old space区(O),并引起了百分比的变化,导致Survivor space使用的百分比从73.54%(S0)降到0%(S1)。有效释放了内存空间。绿框中,我们可以看到,一次full gc之后,Old space区(O)的内存被回收,从99.05%降到67.52%。

 

       图中同时打印了young gc和full gc的总次数、总耗时。而,每次young gc消耗的时间,可以用相间隔的两行YGCT相减得到。每次full gc消耗的时间,可以用相隔的两行FGCT相减得到。例如红框中表示的第一行、第二行之间发生了1次young gc,消耗的时间为0.252-0.252=0.0秒。

 

       常驻内存区(P)的使用率,始终停留在98.49%左右,说明常驻内存没有突变,比较正常。

 

       如果young gc和full gc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低。但也不能说明一定没有内存泄露。

 

       GCT 是YGCT 和FGCT的时间总和。

 

      以上,介绍了Jstat按百分比查看gc情况的功能。其实,它还有功能,例如加载类信息统计功能、内存池信息统计功能等,那些是以绝对值的形式打印出来的,比较少用,在此就不做介绍。