我正在使用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选项时才有效。 Foor堆大小为2048MB,这些有效大小是什么?
答案 0 :(得分:1)
删除NewSize
参数,然后在运行您的应用时监控YoungGen的占用情况。根据YoungGen的大小,您可以返回并将参数更改为最佳值。
使用例如gc logging和/或jstat
查看堆中每个区域的占用情况。
另外,检查VM是否正确解析了您的参数,例如:而不是256MB的YoungGen JVM可能会认为你想要256B。
答案 1 :(得分: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