[case9]频繁GC (Allocation Failure)及young gc时间过长分析 - code-craft - SegmentFault 思否
从上面的分析可以看出,young generation貌似有点大,ygc时间长;另外每次ygc之后survivor空间基本是空的,说明新生对象产生快,生命周期也短,原本设计的survivor空间没有派上用场。因此可以考虑缩小下young generation的大小,或者改为G1试试。
关于-XX:+PrintTenuringDistribution有几个要点,要明确一下:
- 这个打印的哪个区域的对象分布(
survivor
) - 是在gc之前打印,还是在gc之后打印(
gc之后打印
) - 一个新生对象第一次到survivor时其age算0还是算1
对象的年龄就是他经历的MinorGC次数,对象首次分配时,年龄为0,第一次经历MinorGC之后,若还没有被回收,则年龄+1,由于是第一次经历MinorGC,因此进入survivor区。因此对象第一次进入survivor区域的时候年龄为1.
- 晋升阈值(new threshold)动态调整
如果底下age的total大小大于Desired survivor size的大小,那么就代表了survivor空间溢出了,被填满,然后会重新计算threshold。
Read full article from [case9]频繁GC (Allocation Failure)及young gc时间过长分析 - code-craft - SegmentFault 思否
No comments:
Post a Comment