如何在Windows中为Tomcat设置JAVA_OPTS?

wan*_*ist 24 tomcat java-opts

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

例如,这有效:

set JAVA_OPTS="-Xms512M"
Run Code Online (Sandbox Code Playgroud)

但这不是:

set JAVA_OPTS="-Xms512M -Xmx1024M"
Run Code Online (Sandbox Code Playgroud)

它导致错误:

Invalid initial heap size: -Xms512M -Xmx1024M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)

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

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

wan*_*ist 32

显然,正确的形式是没有 ""

如在

set JAVA_OPTS=-Xms512M -Xmx1024M
Run Code Online (Sandbox Code Playgroud)


Gau*_*dar 24

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

set "JAVA_OPTS=-Xms512M -Xmx1024M"
Run Code Online (Sandbox Code Playgroud)


小智 10

尝试

set JAVA_OPTS=%JAVA_OPTS% -Xms512M -Xmx1024M
Run Code Online (Sandbox Code Playgroud)


Ola*_*ock 9

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

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

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

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

set "CATALINA_OPTS=%CATALINA_OPTS% -Xms1024M -Xmx1024M"
Run Code Online (Sandbox Code Playgroud)


Har*_*rsh 6

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

您可以使用以下命令设置最小和最大内存堆大小

JVM -Xms 和 -Xmx 参数

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

JAVA_OPTS=-Xms128m -Xmx1024m        
Run Code Online (Sandbox Code Playgroud)

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

    -XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)

出于性能原因,建议应用程序在服务器模式下运行。默认情况下,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"
Run Code Online (Sandbox Code Playgroud)