如何增加分配给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 性能调整站点 。