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

我有一个使用反向代理的Ubuntu服务器12.04,以便tomcat运行在apache之上。 我在那台机器上有一个汇合实例,还有一个票务系统。 没什么特别的。

内存为8GB,这对于这种用途来说已经足够了。

不时,在最近几天,我的汇合页面经常崩溃。

日志(confluence \ logs \ catalina.2014-05-06)显示了这个:

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

那我怎么能避免这个呢? 如何为该过程提供更多内存。

在我的系统中,我编辑了文件

 /etc/init.d/tomcat 

这些行

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

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

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

 export JAVA_OPTS="-Xms512m -Xmx1024m" 

出错的原因是Java分配内存的方式。 您的应用程序只允许使用有限的内存。 在应用程序启动期间指定此限制。

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

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

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