jboss serwer 有时会抛出“发生未处理的异常:
java.lang.OutOfMemoryError: Java heap space".
您能解释一下它是如何工作的吗?
一些信息:
Jboss 在 Windows 上始终以独立模式运行。
来自standalone.conf“JAVA_OPTS=-Xms1G -Xmx1G -XX:MaxPermSize=256M”
我部署了约 50MB 的 war 文件,测试后我将其删除。
导致此 Java 堆空间异常的可能原因是什么?
我应该在以下部署之间重新启动服务器吗?
有没有清理堆空间的命令?
如果我理解正确地增加 -Xmx
参数将不会有帮助。它只会延迟异常的出现。对吗?
提前致谢
最佳答案
What is possible cause of this Java heap space exception?
从表面上看,解释很简单。 JVM 已耗尽堆空间,GC 无法回收足够的空间来继续。
但是是什么导致 JVM 进入这种状态呢?
有许多可能的解释,但它们大多分为三类:
您的应用程序存在内存泄漏。
重复部署会导致内存泄漏。
没有内存泄漏,但有时您的应用程序会收到需要太多内存的请求。
Should I restart server between following deploys?
如果部署导致泄漏,这可能会有所帮助。如果没有,就不会。
Is there any command to clean heap space?
没有命令可以执行此操作。在抛出 OOME 之前,JVM 已经运行了一次“完整”GC。
If I understand corectly increasing of -Xmx argument will not help. It will only delay the appearance of the exception. Right?
这要看情况。如果根本原因是上面#3,那么增加堆大小可能会解决问题。但如果根本原因是 #1 或 #2,那么调整堆大小将(最多)导致 JVM 在崩溃之间存活更长时间。
我的建议是首先将其视为“正常”(原因#1)内存泄漏,并使用内存分析器来识别和修复可能随着时间的推移而产生的泄漏。
如果/当您可以明确消除原因#1时,请考虑其他原因。
关于java - Jboss java.lang.OutOfMemoryError : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169426/