Tomcat JVM内存调整

时间:2013-10-24 16:10:50

标签: java tomcat memory-management jvm jvm-arguments

我正在使用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,这些有效大小是什么?

2 个答案:

答案 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