-XX:+PrintGCTimeStamps输出格式:
289.556: [GC [PSYoungGen: 314113K->15937K(300928K)] 405513K->107901K(407680K), 0.0178568 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]
293.271: [GC [PSYoungGen: 300865K->6577K(310720K)] 392829K->108873K(417472K), 0.0176464 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]
详解:
293.271是从jvm启动直到垃圾收集发生所经历的时间,GC表示这是一次Minor GC(新生代垃圾收集);[PSYoungGen: 300865K->6577K(310720K)] 提供了新生代空间的信息,PSYoungGen,表示新生代使用的是多线程垃圾收集器Parallel Scavenge。300865K表示垃圾收集之前新生代占用空间,6577K表示垃圾收集之后新生代的空间。新生代又细分为一个Eden区和两个Survivor区,Minor GC之后Eden区为空,6577K就是Survivor占用的空间。
括号里的310720K表示整个年轻代的大小。
392829K->108873K(417472K),表示垃圾收集之前(392829K)与之后(108873K)Java堆的大小(总堆417472K,堆大小包括新生代和年老代)
由新生代和Java堆占用大小可以算出年老代占用空间,如,Java堆大小417472K,新生代大小310720K那么年老代占用空间是417472K-310720K=106752k;垃圾收集之前老年代占用的空间为392829K-300865K=91964k 垃圾收集之后老年代占用空间108873K-6577K=102296k.
0.0176464 secs表示垃圾收集过程所消耗的时间。
[Times: user=0.06 sys=0.00, real=0.01 secs] 提供cpu使用及时间消耗,user是用户模式垃圾收集消耗的cpu时间,实例中垃圾收集器消耗了0.06秒用户态cpu时间,sys是消耗系统态cpu时间,real是指垃圾收集器消耗的实际时间。
-XX:+PrintGCDetails输出格式:
293.289: [Full GC [PSYoungGen: 6577K->0K(310720K)]
[PSOldGen: 102295K->102198K(134208K)] 108873K->102198K(444928K)
[PSPermGen: 59082K->58479K(104192K)], 0.3332354 secs]
[Times: user=0.33 sys=0.00, real=0.33 secs]
说明:
Full GC表示执行全局垃圾回收
[PSYoungGen: 6577K->0K(310720K)] 提供新生代空间信息,解释同上
[PSOldGen: 102295K->102198K(134208K)]提供了年老代空间信息;
108873K->102198K(444928K)整个堆空间信息;
[PSPermGen: 59082K->58479K(104192K)]提供了持久代空间信息。
************************************jdk 1.8 ***************************************
928.242: [GC (Allocation Failure) [PSYoungGen: 1253249K->30225K(1289728K)]
1779754K->556738K(2020864K), 0.0356346 secs] [Times: user=0.11 sys=0.00, real=0.03 secs]
931.770: [GC (Allocation Failure) [PSYoungGen: 1260049K->58346K(1269760K)]
1786562K->605128K(2000896K), 0.0383538 secs] [Times: user=0.23 sys=0.01, real=0.04 secs]
935.178: [GC (Allocation Failure) [PSYoungGen: 1269738K->74746K(1286144K)]
1816520K->628896K(2017280K), 0.0545040 secs] [Times: user=0.23 sys=0.00, real=0.06 secs]
938.592: [GC (Allocation Failure) [PSYoungGen: 1286138K->74730K(1234944K)]
1840288K->634580K(1966080K), 0.0466145 secs] [Times: user=0.23 sys=0.00, real=0.05 secs]
(Allocation Failure) 是 触发原因,内存分配失败 Yong 区!
[Full GC (System.gc()) [PSYoungGen: 64606K->0K(1250304K)] [ParOldGen: 560282K->70636K(731136K)]
624888K->70636K(1981440K), [Metaspace: 80870K->80870K(1122304K)], 0.3997928 secs]
[Times: user=1.22 sys=0.02, real=0.40 secs]
这是fullGC 触发原因系统调用 jvm 退出
704.975: [Full GC (Ergonomics) [PSYoungGen: 113660K->0K(1078272K)]
[ParOldGen: 608998K->319617K(731136K)] 722659K->319617K(1809408K),
[Metaspace: 78468K->78468K(1120256K)], 0.7647321 secs] [Times: user=3.06 sys=0.06, real=0.77 secs]
这是fullGC 触发原因系统调用,表示JVM内部环境认为此时可以进行一次垃圾收集。
97.172: [Full GC (Metadata GC Threshold) [PSYoungGen: 19117K->0K(1314304K)]
[ParOldGen: 92121K->102831K(393728K)] 111239K->102831K(1708032K),
[Metaspace: 57037K->57037K(1101824K)], 0.7376882 secs] [Times: user=2.40 sys=0.03, real=0.74 secs]
这是fullGC 触发原因元空间不足,方法区
14.622: [Full GC (Metadata GC Threshold) [PSYoungGen: 22862K->0K(1009152K)]
[ParOldGen: 74731K->84004K(307712K)] 97593K->84004K(1316864K),
[Metaspace: 34473K->34473K(1081344K)], 0.2161652 secs] [Times: user=0.87 sys=0.01, real=0.21 secs]
这是fullGC 触发原因元空间不足,方法区
392.288: [Full GC [PSYoungGen: 33356K->0K(943104K)] [ParOldGen: 63939K->65555K(659968K)]
97295K->65555K(1603072K) [PSPermGen: 37621K->33623K(74240K)], 0.2658880 secs]
[Times: user=0.88 sys=0.00, real=0.27 secs]
这是fullGC 触发原因老年区