JVM中GC日志理解

每一种收集器的日志形式都是由他们自身的实现决定的,换而言之,每一个收集器的日志格式都可以不一样。但是虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性。

一、示例:以下两段典型的GC日志:

33.125: [GC  [DefNew: 4310K->872K(37888K),0.0025925 secs] 4310K->880K(123904K), 0.0009434 secs] 
100.667: [Full GC [Tenured: 4310K->872K(37888K),0.0149142 secs] 4310K->880K(123904K), 0.0150007 secs] [Times: user=0.01 sys=0.00, real=0.02 secs] 
  • 前面的数字“33.125:” 和 “100.667:”代表了GC发生的时间,这个数字的含义是从java虚拟机启动以来经过的秒数。
  • GC日志开头的“[GC”和“[Full GC” 说明了这次垃圾收集的停顿类型,而不是用来区分新生代GC和老年代GC的,如果有“Full”,说明这次GC是发生了Stop-The-World的,如果调用System.gc()方法所触发的收集,那么在这里将显示“[Full GC (System.gc()”。
  • “[DefNew:”、“[Tenured:”、“[Perm:” 表示GC发生的区域,这里显示的区域名成与使用的GC收集器是密切相关的;如果使用Serial收集器中的新生代名为“Default New Generation”,所以显示“[DefNew:”;如果使用ParNew收集器,新生代名称会变为“[ParNew:”,意为“Parallel New Generation”;如果使用Parallel Scavenge收集器,那它配套的新生代称为“PSYoungGen”。
  • 后面的括号内部的“4310K->872K(37888K)”含义是“GC前该内存区域已使用容量–>GC后该内存区域已使用容量(该内存区域总容量)”
  • “0.0025925 secs” 表示该内存区域GC所占用的时间,单位秒。
  • 方括号之外的“4310K->880K(123904K)”表示“GC前java堆已使用容量”–>“GC后java堆的已使用容量(java堆总容量)”
  • “0.0009434 secs”表示该java堆中GC所占用的时间,单位秒。

参考:《深入理解java虚拟机》

你可能感兴趣的:(jvm)