3

我正在使用 tomcat7 和 jvm 内存选项设置为

-Xms2048m -Xmx2048m 
-XX:NewSize=256m -XX:MaxNewSize=256m 
-XX:PermSize=256m -XX:MaxPermSize=256m 

使用这些设置服务器无法启动并出现错误

Error occurred during initialization of VM
Too small initial heap for new size specified

即使我将 NewSize 增加到 512 或 1024,它也是一样的,它只有在我删除 NewSize 选项时才有效。2048MB 的堆大小,这些是有效的大小吗?

4

2 回答 2

1

删除NewSize参数,然后在运行应用程序时监控 YoungGen 的占用情况。根据 YoungGen 的大小,您可以返回并将参数更改为最佳值。

使用例如 gc 日志记录和/或jstat查看堆中每个区域的占用情况。

此外,检查您的参数是否被 VM 正确解析,例如,YoungGen JVM 可能认为您需要 256B 而不是 256MB。

于 2013-11-05T00:44:21.973 回答
0

我有 4gb ram 64 位。我也遇到了同样的错误,但用这个配置修复了。设置 JAVA_OPTS=%JAVA_OPTS% -Xms2560m

set JAVA_OPTS=%JAVA_OPTS% -Xmx2560m
set JAVA_OPTS=%JAVA_OPTS% -XX:NewSize=1280m
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxNewSize=1280m
set JAVA_OPTS=%JAVA_OPTS% -XX:PermSize=400m
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=400m
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseCompressedOops
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseParNewGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC
set JAVA_OPTS=%JAVA_OPTS% -XX:SurvivorRatio=6
set JAVA_OPTS=%JAVA_OPTS% -XX:+CMSClassUnloadingEnabled
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.client.gcInterval=3600000
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.server.gcInterval=3600000
于 2016-02-18T07:42:16.937 回答