jvm中导致Full GC的情况

程序媛一枚 2020-04-06

导致Full GC一般由于以下几种情况:

1)老年代空间不足

调优时尽量让对象在新生代细分为Eden和幸存区GC时被回收、让对象在新生代多存活一段时间增大新生代内存或者调高晋升老年代的门槛和不要创建过大的对象及数组避免直接在老年代创建对象

2新生代设置过小

 一是新生代GC次数非常频繁,增大系统消耗;二是导致大对象直接进入老年代,占据了老年剩余空间,诱发Full GC

3). 新生代设置过大

一是新生代设置过大会导致老年代过小(堆总量一定),从而诱发Full GC;二是新生代GC耗时大幅度增加

4). Survivor幸存区设置过小

导致对象从eden伊甸园直接到达老年

5). Survivor设置过大

导致eden伊甸园过小,增加了GC频率

一般说来新生代占整个堆1/3比较合适

GC策略的设置方式

1). 吞吐量优先 可由-XX:GCTimeRatio=n来设置

2). 响应速度优先 可由-XX:MaxGCPauseRatio=n来设置

相关推荐