我正在尝试在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。
答案 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的答案,但又想补充两个方面:
请勿使用JAVA_OPTS
,而是使用CATALINA_OPTS
。这将仅用于启动tomcat,而不是用于关闭它。通常,在启动tomcat时需要更多内存,但是关闭进程(只是旋转,告诉tomcat关闭然后再次结束)不需要任何专门调整的资源。实际上,如果操作系统无法获得一些荒谬的内存,关闭甚至可能会失败。
在生产系统上,我的建议是立即声明最大允许内存。因为如果你预计迟早需要内存,你不希望发现它在凌晨3点不可用 - 而是在你启动服务器时。因此,将-Xmx
和-Xms
设置为生产系统中的相同值。 (这使我的方面1更具相关性)
或者,在一行中,这是我的建议:
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