jvm中导致Full GC的情况

Posted wl889490

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jvm中导致Full GC的情况相关的知识,希望对你有一定的参考价值。

导致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来设置

 

以上是关于jvm中导致Full GC的情况的主要内容,如果未能解决你的问题,请参考以下文章

触发JVM进行Full GC的情况及应对策略

JVM:29 面试题:Young GC和Full GC分别在什么情况下会发生?

触发JVM进行Full GC的情况及应对策略

触发JVM进行Full GC的情况及应对策略

JVM 什么时候会full gc

复制算法