JVM理论:(二/4)理解GC日志垃圾收集器参数总结

Posted zjxiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM理论:(二/4)理解GC日志垃圾收集器参数总结相关的知识,希望对你有一定的参考价值。

JVM的GC日志的主要参数包括如下几个: 
-XX:+PrintGC 输出GC日志 
-XX:+PrintGCDetails 输出GC的详细日志 
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) 
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800) 
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息 
-XX:+PrintGCApplicationStoppedTime // 输出GC造成应用暂停的时间 
-Xloggc:../logs/gc.log 日志文件的输出路径

GC日志

  每一种收集器的日志格式都可以不同,但基本上都维持了一定的共性,以下两段GC日志为例:

33.125:[GC[DefNew:3324K->152K(3712K),0.0025925secs]3324K->152K(11904K),0.0031680 secs]
100.667:[FullGC[Tenured:0K->210K(10240K),0.0149142secs]4603K->210K(19456K),[Perm:2999K->2999K(21248K)],0.0150007 secs][Times:user=0.01 sys=0.00,real=0.02 secs]

  最前面的数字“33.125:”和“100.667:”代表了GC发生的时间,这个数字的含义是从Java虚拟机启动以来经过的秒数。

  开头的“[GC”和“[Full GC”说明了这次垃圾收集的停顿类型,而不是用来区分新生代GC还是老年代GC的。如果有“Full”,说明这次GC是发生了Stop-The-World的,例如下面这段新生代收集器ParNew的日志也会出现“[Full GC”(这一般是因为出现了分配担保失败之类的问题,所以才导致STW)。如果是调用System.gc()方法所触发的收集,那么在这里将显示“[Full GC(System)”。

[Full GC 283.736:[ParNew:261599K->261599K(261952K),0.0000288 secs]

  接下来的“[DefNew”、“[Tenured”、“[Perm”表示GC发生的区域,这里显示的区域名称与使用的GC收集是密切相关的。

  Serial收集器中的新生代名为“Default New Generation”,所以显示的是“[DefNew”。

  ParNew收集器,新生代名称就会变为“[ParNew”,意为“Parallel New Generation”。

  Parallel Scavenge收集器,新生代称为“PSYoungGen”,老年代和永久代同理,名称也是由收集器决定的。

  可参考:http://www.cnblogs.com/mikevictor07/p/5024645.html?utm_source=tuicool&utm_medium=referral

  后面方括号内部的“3324K->152K(3712K)”含义是“GC前该内存区域已使用容量->GC后该内存区域已使用容量(该内存区域总容量)”。 而在方括号之外的“3324K->152K(11904K)”表示“GC前Java堆已使用容量->GC后Java堆已使用容量(Java堆总容量)”。

  再往后,“0.0025925 secs”表示该内存区域GC所占用的时间,单位是秒。

内存各区域分配日志

Heap  
  def new generation   total 9216K, used 4326K    //年轻代   
  eden space 8192K,  51% used
  from space 1024K,  14% used  
  to space 1024K,   0% used
  tenured generation   total 10240K, used 6144K    //老年代  
  the space 10240K,  60% used
  compacting perm gen  total 12288K, used 2114K    //永久代(方法区)  
  the space 12288K,  17% used

垃圾收集器参数总结

   技术分享图片

  技术分享图片

 

参考链接:

  https://blog.csdn.net/column/details/14851.html

  https://blog.csdn.net/baidu_33116785/article/details/53258822








以上是关于JVM理论:(二/4)理解GC日志垃圾收集器参数总结的主要内容,如果未能解决你的问题,请参考以下文章

JVM垃圾回收篇(扩展知识)

深入理解java虚拟机GC垃圾回收-虚拟机及垃圾收集器日志参数总结

GC调优配置参数

JVM探秘:GC日志收集与分析

JVM-GC日志查看分析

JVM层GC调优(下)