博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GC overhead limit exceeded
阅读量:5838 次
发布时间:2019-06-18

本文共 473 字,大约阅读时间需要 1 分钟。

GC overhead limit exceeded

java.lang.OutOfMemoryError:GC overhead limit exceeded

是虚拟机判定的GC效率过低抛出的error,这个仅仅是起到辅助作用,帮助提示系统分配的堆可能太小,虚拟机不一定要开启这个错误提示,可以通过“-XX:-UseGCOverheadLimit”来禁止这种OOM的产生。

判定GC效率过低的条件

GC是内存回收的关键,如果GC效率低下,那么系统的性能会受到严重的影响。如果系统的堆空间太小,那么GC所占的时间就会较多,并且回收所释放的内存就会较少。根据GC占用的系统时间,以及释放内存的大小,虚拟机会评估GC的效率,一旦虚拟机认为GC的效率过低,就有可能直接抛出OOM异常。

虚拟机判定的GC效率过低的情况如下:

(1)花在GC上的时间是否超过了98%
(2)年老代释放的内存是否小于2%
(3)eden区释放的内存是否小于2%
(4)是否连续最近5次GC都出现了上述几种情况(同时出现)

只有同时满足上面条件,虚拟机才可能抛出OOM。

参考

转载地址:http://ckncx.baihongyu.com/

你可能感兴趣的文章