当前位置: 首页 > >

-XX:+PrintGCTimeStamps -XX:+PrintGCDetails 日志分析

发布时间:

-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 触发原因老年区


?


?



友情链接: