java GC详解
关键词:
[GC (Allocation Failure) [ParNew: 367523K->1293K(410432K), 0.0023988 secs] 522739K->156516K(1322496K), 0.0025301 secs] [Times: user=0.04 sys=0.00, real=0.01 secs]
GC:
表明进行了一次GC,前面没有FULL修饰,表明为一次minor gc(同样会STW,stop the world,停止其他线程工作)
Allocation Failure:
表明本次GC是因为年轻代中没有足够的空间存储新数据了
ParNew:
表明本次GC发生在年轻代并且使用的ParNew垃圾收集器(ParNew垃圾收集器是serial的一个多线程版本),该收集器采用复制算法回收内存
367523K->1293K(410432K):
gc前该区域内存使用量
gc后该区域内存使用量
该区域总内存量
0.0023988 secs:
本次gc耗时(秒)
522739K->156516K(1322496K):
堆区垃圾回收前的大小
堆区垃圾回收后的大小
堆区总大小
Times: user=0.04 sys=0.00, real=0.01 secs:
分别表示用户态耗时
内核态耗时
总耗时
结论:
该次GC新生代减少了367523-1293=366239K
Heap区总共减少了522739-156516=366223K
366239 – 366223 =16K,说明该次共有16K内存从年轻代移到了老年代,可以看出来数量并不多,说明都是生命周期短的对象,只是这种对象有很多。
我们需要的是尽量避免Full GC的发生,让对象尽可能的在年轻代就回收掉,所以这里可以稍微增加一点年轻代的大小,让那17K的数据也保存在年轻代中。
网友评论