【问题标题】:Tomcat JVM memory tweakingTomcat JVM 内存调整
【发布时间】:2013-11-03 11:14:48
【问题描述】:

我使用的是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 的堆大小,这些大小有效吗?

【问题讨论】:

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


    【解决方案1】:

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

    使用例如gc logging 和/或jstat 以查看堆中每个区域的占用情况。

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

    【讨论】:

      【解决方案2】:

      我有 4GB 内存 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
      

      【讨论】:

        猜你喜欢
        • 2012-03-20
        • 2010-11-05
        • 1970-01-01
        • 2014-09-19
        • 2010-09-22
        • 1970-01-01
        • 2014-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多