频繁ygc

ygc频繁的case

很多人都问过我多久一次的ygc叫频繁,其实由于ygc通常是非常快的(几十ms或更低),所以通常来说ygc很频繁的发生也不会造成太大的影响,例如我们很多生产系统都是4s左右一次ygc。
ygc频繁是比较难查的,原因是ygc频繁,但通常来说都是ygc后就回收掉了,所以内存dump下来是看不出什么的,对于这个case我给的建议是多jmap -histo [pid]几次,原因是希望多看看在ygc的阶段中产生的对象到底是些什么…
业务方多执行了几次后,很幸运的看到了频繁产生的对象是一个自定义的对象,看到这个后就用btrace去跟了,看看到底是哪里在频繁的产生这个对象。
不过这个排查方法其实并没有通用,例如如果看到频繁产生的是char[],那就非常不好跟了….

 

注意:

如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化;如果GC时间超过1〜3 秒,或者频繁G C ,则必须优化。如果满足下面的指标,则一般不需要进行GC:
■ Minor GC执行时间不到50ms;
■ Minor GC执行不频繁,约10秒一次;
■ Full GC执行时间不到1s;

文章参考:http://hellojava.info/?tag=ygc%E9%A2%91%E7%B9%81

你可能感兴趣的:(性能分析,频繁ygc)