如何增加分配给 java 的内存?java.lang.OutOfMemoryError:Java 堆空间

如何增加分配给 java 的内存?java.lang.OutOfMemoryError:Java 堆空间

我有一台使用反向代理的 Ubuntu 服务器 12.04,这样 tomcat 就可以在 apache 上运行。我在该机器上有一个 confluence 实例和一个票务系统。所以没什么特别的。

内存为 8GB,对于此用途来说足够了。

有时,尤其是在过去的几天里,我的汇合页面会崩溃。

日志(confluence\logs\catalina.2014-05-06)显示以下内容:

SEVERE: Socket accept failed
java.lang.OutOfMemoryError: Java heap space

那么我该如何避免这种情况?我该如何为该进程提供更多内存。

答案1

在我的系统中我已经编辑了文件

/etc/init.d/tomcat 

有这些行

HEAP="-Xms2048m -Xmx2048m" 
export JAVA_OPTS="$HEAP"

重新启动 tomcat 后,您可以在状态部分看到分配的内存

答案2

您也可以在tomcat/bin/setenv.sh文件中执行此操作并重新启动 tomcat:

export JAVA_OPTS="-Xms512m -Xmx1024m"

答案3

错误的原因在于 Java 分配内存的方式。您的应用程序只能使用有限的内存量。此限制是在应用程序启动时指定的。

允许的最大大小是在 JVM 启动期间通过指定 JVM 参数(例如 -Xmx)设置的。如果您未明确设置大小,则将使用特定于平台的默认值。

因此,当您尝试向内存中的堆空间区域添加更多数据,但这些数据的大小大于 JVM 在 Java 堆空间中可以容纳的大小时,将触发“java.lang.OutOfMemoryError: Java heap space”错误。

因此,显而易见的方法是增加(或添加,如果缺失)通过 -Xmx 参数指定的最大可能堆大小。但在许多情况下,您只是隐藏了症状,而不是解决根本问题。要查看 java.lang.OutOfMemoryError:Java 堆空间错误的完整解释,请查看 Plumbr性能调优站点

答案4

这些答案对我没有用,我试过了,而且有效:

export _JAVA_OPTIONS=-Xmx4096m

相关内容