相关疑难解决方法(0)

"java.lang.OutOfMemoryError:超出GC开销限制"中过多GC时间的持续时间

偶尔,在每两天一次到每两周一次之间,我的应用程序在代码中看似随机的位置崩溃:java.lang.OutOfMemoryError: GC overhead limit exceeded.如果我谷歌这个错误,我来到这个问题,并引导我到这个阳光文件,它表示:

如果在垃圾收集中花费了太多时间,并行收集器将抛出OutOfMemoryError:如果在垃圾收集中花费了超过98%的总时间并且恢复了少于2%的堆,则将抛出OutOfMemoryError.此功能旨在防止应用程序长时间运行,同时由于堆太小而很少或没有进度.如有必要,可以通过在命令行中添加选项-XX:-UseGCOverheadLimit来禁用此功能.

这告诉我,我的应用程序显然占用了垃圾收集总时间的98%,只能恢复2%的堆.

但98%的时间是什么时候?应用程序运行的整个两周的98%?最后一毫秒的98%?

我正在尝试确定一个实际解决这个问题的最佳方法,而不仅仅是使用,-XX:-UseGCOverheadLimit但我觉得需要更好地理解我正在解决的问题.

java garbage-collection out-of-memory

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

garbage-collection ×1

java ×1

out-of-memory ×1