2010-04-27 97 views
21

有很多问题提出这个问题或类似的问题。如何增加一个tomcat应用程序的Java堆空间

他们都提供必须执行的命令,我不明白的是我在哪里编写此命令。我想永久增加我的tomcat应用程序的堆空间。

我阅读此页http://javahowto.blogspot.com/2006/06/6-common-errors-in-setting-java-heap.html,并根据Tomcat的部分说

Stop Tomcat server, set environment variable CATALINA_OPTS, and then restart Tomcat. Look at the file tomcat-install/bin/catalina.sh or catalina.bat for how this variable is used. For example,

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

所以我取代了线

set CATALINA_OPTS=

set CATALINA_OPTS=-Xms512m -Xmx512m

但我仍然得到错误。

javax.servlet.ServletException: Servlet execution threw an exception

root cause

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)

+0

你有什么错误? – laz 2010-04-27 04:46:36

+0

@laz - 我已经添加了堆栈跟踪 – Ankur 2010-04-27 04:49:49

回答

7

您的更改很可能正在工作。您的应用程序是否需要大量内存 - 堆栈跟踪显示一些与图像相关的功能。

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

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

如果错误发生在几个请求之后,那么你可能有内存泄漏 - 垃圾收集器没有回收对象。使用像JProfiler 这样的工具可以帮助您监视虚拟机正在使用多少内存,并可以帮助您查看正在使用该内存的内容以及垃圾收集器未回收对象的原因。

+5

这个答案实际上并不回答OP关于* how *如何增加Tomcat应用程序的Java堆空间的问题? – 8bitjunkie 2015-09-21 13:23:27

9

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

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

set CATALINA_OPTS=-Xms512m -Xmx512m 

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

如果您仍然在使用OutOfMemoryError,则需要知道您的应用程序在特定时刻需要多少内存(nom.tam.util.ArrayFuncs ...)。你将不得不优化应用程序,或者增加提供给tomcat的内存。

+0

我在Windows上运行tomcat,我只是抓住tomcat文件并将它们解压缩。我没有安装任何服务。 – Ankur 2010-04-27 04:48:46

22

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

set JAVA_OPTS=-Xmx512m

+0

我无法在tomcat8的bin文件夹中找到setenv.bat文件 – 2017-11-24 09:42:57

4
  • 在Eclipse中打开服务器选项卡
  • 右键点击打开
  • 点击开放劳克配置
  • 转到参数
  • 在这里,您可以在VM参数添加赞同

    -Xms64m -Xmx256m 
    
2

如果您使用的是Windows,它非常简单。只需进入System Environnement变量(右键点击Computer> Properties> Advanced System Parameters> Environnement Variables);创建一个名为= CATALINA_OPTS且值为= -Xms512m -Xmx1024m的新系统变量。重新启动Tomcat并享受!

1

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

export CATALINA_OPTS="-Xms512M -Xmx1024M" 

UPDATEcatalina.sh内容清清楚楚地写着 -

Do not set the variables in this script. Instead put them into a script setenv.sh in CATALINA_BASE/bin to keep your customizations separate.

所以,你可以在setenv.sh添加上述代替(创建一个文件,如果不存在的话)。

+2

建议您将它放在一个单独的文件中:bin/setenv.sh – 2014-11-26 12:14:23

+0

+1将它放在setenv.sh中,例如在Ubuntu上,您可能会有/usr/share/tomcat7/bin/catalina.sh,您可以在/usr/share/tomcat7/bin/setenv.sh中放置CATALINA_OPTS的单行代码 – 2017-07-17 19:29:10

-1

可以作为CATALINA_OPTS = -Xms512m -Xmx512m

打开你的tomcat-DIR /斌/ catalina.sh文件中catalina.sh设置此并添加以下行的任何地方 -

CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx3024m" 

并重新启动你的tomcat

相关问题