JAVA GC OverheadLimit 错误

标签 java multithreading garbage-collection

我正在运行一个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/

相关文章:

haskell - 如何在 Haskell 中优化软实时应用程序的垃圾收集?

python - 当定义函数但未调用函数时,Python 解释器会解析变量引用吗?

java - 无法在弹出窗口中找到 Web 元素

java - 为什么java 8注释@Contened使用128字节,这是大多数硬件上缓存行大小的两倍

Python:threading.timer 不遵守间隔

javascript - 制作动画时防止 javascript gc

java - RestEasy @MultipartForm null byte[] 和 InputStream 收到

java - 如何在不同的 Activity 中使用现有正在运行的线程中的方法

java - Java 中的可执行管道和过滤器图

python - 我应该在我的项目中使用线程多处理还是异步?