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

如何增加tomcat应用程序的Java堆空间,java,tomcat,heap-memory,Java,Tomcat,Heap Memory,有很多问题会问这个或类似的问题 他们都给出了必须执行的命令,我不明白的是我应该在哪里写这个命令。我想永久增加tomcat应用程序的堆空间 我读了这一页,上面写着Tomcat部分 停止Tomcat服务器,设置环境变量CATALINA_OPTS,然后重新启动Tomcat。查看文件tomcat install/bin/catalina.sh或catalina.bat了解如何使用此变量。比如说, 设置CATALINA_OPTS=-Xms512m-Xmx512m(窗口,值周围没有“”) export CA

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

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

我读了这一页,上面写着Tomcat部分

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

设置CATALINA_OPTS=-Xms512m-Xmx512m(窗口,值周围没有“”)
export CATALINA_OPTS=“-Xms512m-Xmx512m”(ksh/bash),“大约值)
setenv CATALINA_选择“-Xms512m-Xmx512m”(tcsh/csh,“围绕值)

所以我换了线

设置CATALINA_选项=

设置CATALINA_选项=-Xms512m-Xmx512m

但我仍然得到了错误

javax.servlet.ServletException:servlet执行引发异常

根本原因

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) javaservlet.http.HttpServlet.service(HttpServlet.java:637) javaservlet.http.HttpServlet.service(HttpServlet.java:717)


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

如果您正在控制台上运行tomcat(使用startup.bat),则需要编辑catalina.bat并使用catalina_选项。例如:

set CATALINA_OPTS=-Xms512m -Xmx512m
重新启动tomcat将应用新设置


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

您的更改可能很有效。应用程序是否需要大量内存?堆栈跟踪显示了一些与图像相关的功能

我猜这个错误要么马上就发生了,要么是一个大文件,要么是在几个请求之后发生的

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

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

有一种机制可以做到这一点,而无需修改分发版中的任何文件。您可以创建一个单独的文件
%CATALINA_HOME%\bin\setenv.bat
$CATALINA_HOME/bin/setenv.sh
,并将环境变量放在那里。此外,内存设置适用于JVM,而不是Tomcat,因此我将设置
JAVA\u OPTS
变量:

set JAVA\u OPTS=-Xmx512m

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

    -Xms64m -Xmx256m
    

如果您使用的是Windows,它非常简单。只需进入系统环境变量(右clic计算机>属性>高级系统参数>环境变量);创建一个名为CATALINA_OPTS、值为-Xms512m-Xmx1024m的新系统变量。重新启动Tomcat,尽情享受吧

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

export CATALINA_OPTS="-Xms512M -Xmx1024M"
更新
catalina.sh
内容明确表示-

不要在此脚本中设置变量。而是将它们放在CATALINA_BASE/bin中的脚本setenv.sh中,以保持自定义设置的独立性


因此,您可以在setenv.sh中添加上述内容(如果不存在,则创建一个文件)。

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

打开tomcat dir/bin/catalina.sh文件并在任意位置添加以下行-

CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx3024m"

然后重新启动tomcat

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

电话号码:143

set "CATALINA_OPTS=-Xms512m -Xmx512m"
重新启动Tomcat服务最简单的方法是:(在Linux/ubuntu e.t.c中)

转到tomcat bin目录:

cd /opt/tomcat8.5/bin
在bin目录“setenv.sh”下创建新文件,并将下面提到的条目保存在其中

export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"
并发出命令:

./catalina.sh run
在catalina日志文件中,您可以看到如下条目:

INFO [main] VersionLoggerListener.log Command line argument: -Xms512m
INFO [main] VersionLoggerListener.log Command line argument: -Xmx2048m
INFO [main] VersionLoggerListener.log Command line argument: -XX:MaxPermSize=256m
这证实了发生了上述变化

此外,还可以在setenv.sh文件中相应修改“Xms512m”和“-Xmx2048m”的值

tomcat的启动也可以分两步完成。 cd/opt/tomcat8.5/bin

Step #1
run ./setenv.sh 
Step #2
./startup.sh
如果您使用的是systemd edit:

/usr/lib/systemd/system/tomcat8.service
设定

Environment=CATALINA_OPTS="-Xms512M -Xmx2048M -XX:MaxPermSize=256m"

对于Windows服务,您需要根据您的tomcat版本运行tomcat9w.exe(或6w/7w/8w)。 首先,确保tomcat已停止。然后双击tomcat9w.exe。导航到Java选项卡。如果您知道您有64位Windows和64位Java以及64位Tomcat,那么可以将内存设置为高于512。您需要进行一些任务管理器监视,以确定将其设置为多高。对于2019年开发的大多数应用程序。。。我建议初始内存池为1024,最大内存池为2048。当然,如果你的电脑有大量的内存。。。你想飞多高就飞多高。
另外,请看下面的回答:

我正在windows上运行tomcat,我只是抓取了tomcat文件并将其解压缩。我没有安装任何服务。@laz-我已添加