如何在Windows中为Tomcat设置JAVA_OPTS?

时间:2013-02-06 14:13:45

标签: tomcat java-opts

我正在尝试在Windows机器上为Tomcat设置JAVA_OPTS,但如果添加多个变量,我会一直收到错误。

例如,这有效:

set JAVA_OPTS="-Xms512M"

但这不是:

set JAVA_OPTS="-Xms512M -Xmx1024M"

导致错误:

Invalid initial heap size: -Xms512M -Xmx1024M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

好像我可以设置一个变量(-Xmx也可以),但不是几个。

我正在使用指示的setenv.bat文件,我的Tomcat是7.0.35。

7 个答案:

答案 0 :(得分:32)

显然,正确的表单没有""

set JAVA_OPTS=-Xms512M -Xmx1024M

答案 1 :(得分:24)

对于Windows,如果变量值中包含空格(“”),正确的方法实际上是在变量名称之前放置引号(“),如:

set "JAVA_OPTS=-Xms512M -Xmx1024M"

答案 2 :(得分:10)

尝试

set JAVA_OPTS=%JAVA_OPTS% -Xms512M -Xmx1024M

答案 3 :(得分:9)

我最喜欢Gaurav和user2550946的答案,但又想补充两个方面:

  1. 请勿使用JAVA_OPTS,而是使用CATALINA_OPTS。这将仅用于启动tomcat,而不是用于关闭它。通常,在启动tomcat时需要更多内存,但是关闭进程(只是旋转,告诉tomcat关闭然后再次结束)不需要任何专门调整的资源。实际上,如果操作系统无法获得一些荒谬的内存,关闭甚至可能会失败。

  2. 在生产系统上,我的建议是立即声明最大允许内存。因为如果你预计迟早需要内存,你不希望发现它在凌晨3点不可用 - 而是在你启动服务器时。因此,将-Xmx-Xms设置为生产系统中的相同值。 (这使我的方面1更具相关性)

  3. 或者,在一行中,这是我的建议:

    set "CATALINA_OPTS=%CATALINA_OPTS% -Xms1024M -Xmx1024M"
    

答案 4 :(得分:4)

建议您创建名为setenv.bat的文件并将其放在Tomcat bin目录中。使用此文件(由catalina.bat和catalina.sh脚本运行),您可以使用JAVA_OPTS变量更改以下Tomcat环境设置:

您可以使用

设置最小和最大内存堆大小

JVM -Xms和-Xmx参数

最佳限制取决于许多条件,例如Integrator ETL应执行的转换。对于Information Discovery转换,建议最多1 GB。例如,要将最小堆大小设置为128 MB,将最大堆大小设置为1024 MB,请使用

JAVA_OPTS=-Xms128m -Xmx1024m        

您应将PermGen(永久代)内存空间的最大限制设置为大于默认值的大小。对于企业应用程序,默认值64 MB是不够的。合适的内存限制取决于各种标准,但在大多数情况下,256 MB将是一个不错的选择。如果PermGen空间最大值太低,可能会出现OutOfMemoryError:PermGen空间错误。您可以使用以下JVM参数

设置PermGen最大限制
    -XX:MaxPermSize=256m

出于性能原因,建议应用程序在服务器模式下运行。默认情况下,Apache Tomcat不在服务器模式下运行。您可以使用JVM -server参数设置服务器模式。您可以在setenv文件的环境变量中的JAVA_OPTS变量中设置JVM参数。

The following is an example of a setenv.bat file:

set "JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx1024m -XX:MaxPermSize=256m -server"

答案 5 :(得分:1)

这是因为,您希望为JVM分配的内存量不可用,或者您可能分配的内存超过可用内存。尝试小尺寸然后你可以看到差异。
尝试:

set JAVA_OPTS=-Xms128m -Xmx512m -XX:PermSize=128m

答案 6 :(得分:0)

SET JAVA_HOME=C:\Applications\java\java_8
SET PATH=%PATH%;C:\Applications\java\java_8\bin
SET JAVA_OPTIONS=-d64 -Xms128g -Xmx128g