GC日志开头的“[GC”和“[Full GC”说明了这次垃圾收集的停顿类型, 而不是用来区分新生代GC还是老年代GC的。 如果有“Full”, 说明这次GC是发生了Stop-The-World的, 例如下面这段新生代收集器ParNew的日志也会出现“[Full GC”( 这一般是因为出现了分配担保失败之类的问题, 所以才导致STW) 。 如果是调用System.gc( ) 方法所触发的收集, 那么在这里将显示“[Full GC( System) ”。
接下来的“[DefNew”、 “[Tenured”、 “[Perm”表示GC发生的区域, 这里显示的区域名称与使用的GC收集器是密切相关的, 例如上面样例所使用的Serial收集器中的新生代名为“DefaultNew Generation”, 所以显示的是“[DefNew”。 如果是ParNew收集器, 新生代名称就会变为“[ParNew”, 意为“Parallel New Generation”。 如果采用Parallel Scavenge收集器, 那它配套的新生代称为“PSYoungGen”, 老年代和永久代同理, 名称也是由收集器决定的。后面方括号内部的“3324K-> 152K( 3712K) ”含义是“GC前该内存区域已使用容量->GC后该内存区域已使用容量( 该内存区域总容量) ”。 而在方括号之外的“3324K->152K( 11904K) ”表示“GC前Java堆已使用容量-> GC后Java堆已使用容量( Java堆总容量) ”。
eclipse 打印gc日志参数配置
-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails
-XX:SurvivorRatio=8 -XX:PermSize=1M -XX:MaxPermSize=2M
配置类的加载/卸载
-verbose:class -XX:+TraceClassLoading -XX:+TraceClassUnloading