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

2022-09-01 12:41:29

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

他们都给出了必须执行的命令,我不明白的是我应该在哪里写这个命令。我想永久增加我的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了解如何使用此变量。例如

set CATALINA_OPTS=-Xms512m -Xmx512m (Windows, no “” around value)
export CATALINA_OPTS=“-Xms512m -Xmx512m” (ksh/bash, “” around the value)
setenv CATALINA_OPTS “-Xms512m -Xmx512m” (tcsh/csh, “” around the value)

所以我换了线

设置 CATALINA_OPTS=

设置CATALINA_OPTS=-Xms512m -Xmx512m

但我仍然得到错误。

javax.servlet.ServletException: Servlet execution throw a exception

根源

java.lang.OutOfMemoryError: Java heap space java.lang.reflect.Array.multiNewArray(Native Method) 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)


答案 1

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

set JAVA_OPTS=-Xmx512m


答案 2

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

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

set CATALINA_OPTS=-Xms512m -Xmx512m

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

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


推荐