对JVM性能的监控是非常重要的,它可以实时的了解JVM性能消耗情况。

 一:垃圾收集

监控JVM的垃圾收集非常重要,因为它对应用的吞吐量和延迟有深刻影响。

Hotspot VM 两种方式查看垃圾回收情况:日志打印(-XX:+printGCDetails )和GUI监控工具。

几乎不会占什么额外的开销。

垃圾收集分为两种:次要垃圾收集(新生代收集 minor gc)和主要垃圾收集(full gc 整个堆)

垃圾收集的数据包括:

  1. 当前使用的垃圾收集器
  2. java堆大小
  3. 新生代和老年代的大小
  4. 永久代大小
  5. Minor GC的持续时间,频率,空间回收量
  6. Full GC的持续时间,频率
  7. 垃圾收集前后,java堆,新生代,老年代,持久代占用量
  8. 是否老年代或者永久代的占有触发的full gc
  9. 应用是否显示调用gc
  10. 每个并发垃圾收集周期内空间回收量
  11. 是否显示调用了system.gc()

收集器:parallel scavenge(throughput) (psyougGen)和 cms (ParNew 并行收集器,   DefNew,串行收集器)

 

-verbose:gc 报告垃圾收集信息最常用的命令行选项

 

Full gc: 重点关注的是垃圾收集之前老年代和永久代的占用量,因为,当老年代或永久代的占用接近容量时,都会触发full gc.

 

调优情况:当回收的对象比较少,只是浪费cpu。或者对象以不小于cms并行清除垃圾对象速度提升到老年代。

 

-XX:PrintTenuring-Distribution显示新生代对象年龄的直方图

 

包含时间戳: -XX:+PrintGCTimeStamps ; -XX:+PrintGCDateStamps   

-Xloggc : <filename>  记录gc日志

 

性能检测工具:gchisto  jconsole   visualVM   visualGC