【问题标题】:Java 8 - Xmx and XX:MaxHeapSize do not matchJava 8 - Xmx 和 XX:MaxHeapSize 不匹配
【发布时间】:2017-08-27 21:31:24
【问题描述】:

我已将 JVM 的 Xmx 参数设置为 5120,但是当 java 进程(tomcat)运行时,我看到 MaxHeapSize 与 Xmx 值不匹配,它卡在 2570,这对我来说很奇怪,有什么想法非常感谢!

ps的输出:

/usr/bin/java -Dnop -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1536m -Xmx5120 -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true -Djava.net.preferIPv4Stack=true - DSHUTDOWN_PORT=8005 -DHTTP_PORT=8080 -DHTTPS_PORT=8443 -DAJP_PORT=8009 -XX:InitialHeapSize=2570m -XX:MaxHeapSize=2570m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+DisableExplicitGC -Djava.endorsed.dirs =/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/app/tomcat/default - Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/app/tomcat/default/temp org.apache.catalina.

【问题讨论】:

  • -Xmx5120 应该是Xmx5120m

标签: java tomcat heap-memory


【解决方案1】:

-Xmx 选项等效于 -XX:MaxHeapSize。

(https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html)

所以-Xmx5120 表示5120 字节,但被-XX:MaxHeapSize=2570m 取代。这就是你被这个困住的原因。

只需提供其中一项设置并选择适当的值,例如

-Xmx5120m

【讨论】:

    【解决方案2】:

    您的配置中的问题:

    -Xms1536m -Xmx5120

    如果你不指定这个配置的单位,它将被解析为bytes,这意味着你的Xmx小于你的Xms,如果这个配置适用JVM将无法启动:

     ~/ java -Xms1536m -Xmx5120 -XX:+PrintFlagsFinal -version
    Error occurred during initialization of VM
    Initial heap size set to a larger value than the maximum heap size
    

    您的 JVM 没有中止,因为您有以下配置:

    -XX:InitialHeapSize=2570m -XX:MaxHeapSize=2570m

    -Xms-XX:InitialHeapSize-Xmx-XX:MaxHeapSize,所以你之前的错误配置-Xms1536m -Xmx5120 被后面的配置替换,将Xmx 指定为2570M。

    【讨论】:

      猜你喜欢
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2020-05-20
      相关资源
      最近更新 更多