JAVA GC过热限制错误
我正在运行一个JAVA程序 当我试着运行这个程序时,这个程序说JAVA GC过热限制错误,java,multithreading,garbage-collection,Java,Multithreading,Garbage Collection,我正在运行一个JAVA程序 当我试着运行这个程序时,这个程序说 Exception in thread "Thread-3" java.lang.OutOfMemoryError:GC overhead limit exceeded 我在谷歌上搜索,发现很多文档都说我需要使用-Xmx选项和-XX:-usegcOverdeLimit 尽管我使用了这些选项,但仍然不起作用。(我使用-Xmx4g获得更多内存) 虽然我关闭了UsegCoveredLimit,但为什么会显示此消息?我如何解决此问题?这和
Exception in thread "Thread-3" java.lang.OutOfMemoryError:GC overhead limit exceeded
我在谷歌上搜索,发现很多文档都说我需要使用-Xmx选项和-XX:-usegcOverdeLimit
尽管我使用了这些选项,但仍然不起作用。(我使用-Xmx4g获得更多内存)
虽然我关闭了UsegCoveredLimit,但为什么会显示此消息?我如何解决此问题?这和“线程”有关吗?(因为我在这个网站上看到了一个问题,他有同样的问题,但在“main”线程中出现了异常)
谢谢。默认情况下,如果您在GC中花费的时间超过了总时间的98%,并且在GC恢复后,堆的2%以下,JVM将被配置为抛出此错误 我怀疑你的代码中有很多资源泄漏。如果您将代码粘贴到这里,以便我们可以查看,这将非常有用
还有其他方法可以使用积极的GC等,但在猜测之前,值得先看一下您的代码。+1如果您有资源泄漏,您放弃的内存越多,它就消耗得越多。也有可能总是需要16 GB或64 GB或更大的容量,在这种情况下,将其设置得足够高将“修复”问题。同意+1,另外,我强烈建议不要使用-XX:-usegcoveredlimit选项,而不是修复问题。您只是在推迟不可避免的问题:应用程序内存不足,需要修复。将等待看到粘贴在问题中的代码:)我同意,该选项是为了保护您。