Ank*_*kur 25 java tomcat heap-memory
有很多问题要问这个或类似的问题.
它们都给出了必须执行的命令,我不明白的是我在哪里写这个命令.我想永久增加我的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,没有""值周围)
导出CATALINA_OPTS =" - Xms512m -Xmx512m"(ksh/bash,""值围绕"
setenv CATALINA_OPTS"-Xms512m -Xmx512m"(tcsh/csh, ""围绕价值)
所以我换了线
设置CATALINA_OPTS =
同
设置CATALINA_OPTS = -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)javax.servlet.http.HttpServlet.service(HttpServlet.java:637)javax.servlet.http.HttpServlet.service(httpServlet.java:717)
Jur*_*ris 26
有一种机制可以在不修改分发中的任何文件的情况下执行此操作.您可以创建单独的文件%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
Run Code Online (Sandbox Code Playgroud)
重新启动tomcat将应用新设置.
如果您仍然遇到OutOfMemoryError,则需要知道应用程序在该特定时刻需要多少内存(nom.tam.util.ArrayFuncs ...).您要么必须优化应用程序,要么只是增加提供给tomcat的内存.
小智 5
在这里,您可以在认可后添加VM参数
-Xms64m -Xmx256m
Run Code Online (Sandbox Code Playgroud)您需要在catalina.sh文件中添加以下几行。
export CATALINA_OPTS="-Xms512M -Xmx1024M"
Run Code Online (Sandbox Code Playgroud)
更新:catalina.sh内容清楚地表明-
不要在此脚本中设置变量。而是将它们放入 CATALINA_BASE/bin 中的脚本 setenv.sh 中,以将您的自定义设置分开。
因此,您可以在 setenv.sh 中添加上面的内容(如果文件不存在,则创建一个文件)。
最简单的方法是:(在 Linux/Ububuntu 等中)
进入tomcat的bin目录:
cd /opt/tomcat8.5/bin
Run Code Online (Sandbox Code Playgroud)
在 bin 目录“setenv.sh”下创建新文件,并将下面提到的条目保存在其中。
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"
Run Code Online (Sandbox Code Playgroud)
并发出命令:
./catalina.sh run
Run Code Online (Sandbox Code Playgroud)
在您的 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
Run Code Online (Sandbox Code Playgroud)
这证实了上述变化的发生。
另外,可以在setenv.sh文件中相应修改“Xms512m”和“-Xmx2048m”的值。
tomcat的启动也可以分两步完成。cd /opt/tomcat8.5/bin
Step #1
run ./setenv.sh
Step #2
./startup.sh
Run Code Online (Sandbox Code Playgroud)
如果您使用 systemd 编辑:
/usr/lib/systemd/system/tomcat8.service
Run Code Online (Sandbox Code Playgroud)
并设置
Environment=CATALINA_OPTS="-Xms512M -Xmx2048M -XX:MaxPermSize=256m"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
166416 次 |
| 最近记录: |