如何为tomcat应用程序增加Java堆空间

有很多问题要问这个或类似的问题。

它们都给出了必须执行的命令,我不明白的是我在哪里写这个命令。 我想永久增加我的tomcat应用程序的堆空间。

我读了这页http://javahowto.blogspot.com/2006/06/6-common-errors-in-setting-java-heap.html ,它在Tomcat部分下面说

停止Tomcat服务器,设置环境变量CATALINA_OPTS,然后重新启动Tomcat。 查看文件tomcat-install / bin / catalina.sh或catalina.bat以了解如何使用此变量。 例如,

设置CATALINA_OPTS = -Xms512m -Xmx512m(Windows,没有“”围绕值)
export CATALINA_OPTS =“ – Xms512m -Xmx512m”(ksh / bash,“”围绕值)
setenv CATALINA_OPTS“-Xms512m -Xmx512m”(tcsh / csh,“”围绕值)

所以我换了这条线

设置CATALINA_OPTS =

设置CATALINA_OPTS = -Xms512m -Xmx512m

但我仍然得到错误。

javax.servlet.ServletException:Servlet执行引发exception

根本原因

java.lang.OutOfMemoryError:Java堆空间java.lang.reflect.Array.multiNewArray(本机方法)java.lang.reflect.Array.newInstance(Array.java:90)nom.tam.util.ArrayFuncs.newInstance(ArrayFuncs。 java:1028)nom.tam.fits.ImageData.read(ImageData.java:259)nom.tam.fits.Fits.readHDU(Fits.java:573)controller.UploadServlet.retreiveFITSFileFields(UploadServlet.java:206)controller。 ScanServerFiles.doPost(ScanServerFiles.java:39)javax.servlet.http.HttpServlet.service(HttpServlet.java:637)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

你的改变可能会奏效。 您的应用程序是否需要大量内存 – 堆栈跟踪显示一些与图像相关的function。

我猜测错误要么立即发生,要么是大文件,要么是在几次请求后发生。

如果错误立即发生,那么您可以进一步增加内存,或调查找​​出为什么一个文件需要如此多的内存。

如果在多次请求之后发生错误,那么您可能会发生内存泄漏 – 垃圾收集器不会回收对象。 使用像JProfiler这样的工具可以帮助您监视VM使用的内存量,并可以帮助您查看正在使用该内存的内容以及垃圾收集器未回收对象的原因。

有一种机制可以在不修改分发中的任何文件的情况下执行此操作。 您可以创建单独的文件%CATALINA_HOME%\bin\setenv.bat$CATALINA_HOME/bin/setenv.sh并将您的环境变量放在那里。 此外,内存设置适用于JVM,而不是Tomcat,因此我设置了JAVA_OPTS变量:

set JAVA_OPTS=-Xmx512m

首先,您不能仅为tomcat应用程序更改内存设置,而是为所有tomcat实例更改内存设置。

如果从控制台运行tomcat(使用startup.bat),则需要编辑catalina.bat并使用CATALINA_OPTS。 例如:

 set CATALINA_OPTS=-Xms512m -Xmx512m 

重新启动tomcat将应用新设置。

如果您仍然遇到OutOfMemoryError,则需要知道应用程序在该特定时刻需要多少内存(nom.tam.util.ArrayFuncs …)。 您要么必须优化应用程序,要么只是增加提供给tomcat的内存。

  • 在eclipse中打开服务器选项卡
  • 右键单击打开
  • 点击打开lauch配置
  • 去争论
  • 在这里,您可以在背书后添加VM参数

     -Xms64m -Xmx256m 

如果你使用的是Windows,那很简单。 只需转到System Environnement变量(右键计算机>属性>高级系统参数>环境变量); 创建一个名为CATALINA_OPTS且值= -Xms512m -Xmx1024m的新系统变量。 重启Tomcat并享受!

您需要在catalina.sh文件中添加以下行。

 export CATALINA_OPTS="-Xms512M -Xmx1024M" 

更新catalina.sh内容清楚地说 –

不要在此脚本中设置变量。 而是将它们放入CATALINA_BASE / bin中的脚本setenv.sh中,以使您的自定义分开。

所以你可以在setenv.sh中添加以上内容(如果文件不存在则创建一个文件)。

只需在catalina.bat文件中设置这个额外的行

没有线路:143

 set "CATALINA_OPTS=-Xms512m -Xmx512m" 

并重启Tomcat服务

您可以在catalina.sh中将其设置为CATALINA_OPTS = -Xms512m -Xmx512m

打开tomcat-dir / bin / catalina.sh文件并在任何地方添加以下行 –

 CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx3024m" 

并重新启动您的tomcat