26

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

例如,这有效:

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。

4

7 回答 7

37

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

如在

set JAVA_OPTS=-Xms512M -Xmx1024M
于 2013-02-06T14:30:24.023 回答
26

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

set "JAVA_OPTS=-Xms512M -Xmx1024M"
于 2014-01-03T10:14:38.683 回答
11

尝试

set JAVA_OPTS=%JAVA_OPTS% -Xms512M -Xmx1024M
于 2013-07-04T14:53:20.023 回答
11

我最喜欢 Gaurav 和 user2550946 的答案的组合,但想再添加两个方面:

  1. 不要使用JAVA_OPTS,而是使用CATALINA_OPTS. 这将仅用于启动 tomcat,而不是用于关闭它。通常,您在启动 tomcat 时需要更多内存,但关闭过程(它只是启动,告诉 tomcat 关闭然后再次结束)不需要任何专门调整的资源。事实上,如果操作系统不再提供一些荒谬的内存量,关机甚至会失败。

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

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

set "CATALINA_OPTS=%CATALINA_OPTS% -Xms1024M -Xmx1024M"
于 2014-07-14T10:20:39.537 回答
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        

您应该将 PermGen(永久代)内存空间的最大限制设置为大于默认值。对于企业应用程序,默认的 64 MB 是不够的。合适的内存限制取决于各种标准,但在大多数情况下 256 MB 是一个不错的选择。如果 PermGen 空间最大值过低,可能会出现 OutOfMemoryError: PermGen space 错误。您可以使用以下 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"
于 2015-02-28T10:01:24.397 回答
1

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

set JAVA_OPTS=-Xms128m -Xmx512m -XX:PermSize=128m
于 2015-09-15T10:03:23.433 回答
0
SET JAVA_HOME=C:\Applications\java\java_8
SET PATH=%PATH%;C:\Applications\java\java_8\bin
SET JAVA_OPTIONS=-d64 -Xms128g -Xmx128g
于 2016-10-11T10:08:18.800 回答