我正在运行一个JAVA程序。
当我尝试运行这个程序时,这个程序说
Exception in thread "Thread-3" java.lang.OutOfMemoryError:GC overhead limit exceeded
我用谷歌搜索,发现很多文档说我需要使用 -Xmx 选项和 -XX:-UseGCOverheadLimit
即使我使用了这些选项仍然不起作用。 (我使用 -Xmx4g 来获得更多内存)
虽然我关闭了 UseGCOverheadLimit,但为什么会出现该消息以及如何解决此问题?与“THREAD”有关吗? (因为我从这个网站看到了一个问题,该问题有同样的问题,但线程“main”中存在异常问题)
谢谢。
最佳答案
默认情况下,如果您花费超过 98% 的总时间在 GC 上,并且 GC 后回收的堆少于 2%,则 JVM 默认会抛出此错误
我怀疑您的代码中有很多资源泄漏。如果您将代码粘贴到此处,以便我们查看,将会很有帮助。
还有其他选项可以使用积极的 GC 等,但在猜测建议之前值得查看您的代码。
关于JAVA GC OverheadLimit 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133076/