java - Jboss java.lang.OutOfMemoryError : Java heap space

标签 java jboss heap-memory

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 进入这种状态呢?

有许多可能的解释,但它们大多分为三类:

  1. 您的应用程序存在内存泄漏。

  2. 重复部署会导致内存泄漏。

  3. 没有内存泄漏,但有时您的应用程序会收到需要太多内存的请求。

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/

相关文章:

java - 仅输入一个字符时 KeyAdapter 发生多个按键事件

java - 当 where 子句条件可以为 null 时更新 SQL

jboss - Jersey 2.1 + JBoss 7.1 NoSuchMethodError : getProperties

java - 无法从同一网络java访问webservice

Java:循环问题

java - 如何使用多值映射

jboss - 无需重建 war 即可自定义 Ejb 计时器计划

java - 服务器上建议的初始堆大小和最大堆大小

c# - 回收值(value)类型统一有什么意义吗

java - 为什么我的 Java 堆转储大小比使用的内存小得多?