【问题标题】:How to set up a really big JVM heap size?如何设置一个非常大的 JVM 堆大小?
【发布时间】:2012-07-09 15:25:20
【问题描述】:

根据 JVM 6 文档,服务器类机器默认接收初始堆大小为 1/4 RAM 或 1GB。考虑到我们的 Solaris 64Bit 服务器有 64 GB,初始堆大小将默认为 256MB。因此,我需要使用 XMX 参数手动设置堆大小为 4GB。但是,当我添加“-Xmx4096M”时,Tomcat 不会启动。这是错误消息:

Invalid maximum heap size: -Xmx4096M
The specified size exceeds the maximum representable size.
Could not create the Java virtual machine.

我的命令行参数应该是什么才能让我的堆增长到 4GB?

【问题讨论】:

  • 您使用的是什么操作系统?一些较旧的操作系统不允许进程拥有超过 2 Gig。
  • Solaris(我刚刚更新了上面的问题)
  • 您运行的是 64 位 jvm 吗?
  • java -version 给我:java 版本“1.6.0_16”/Java(TM) SE Runtime Environment (build 1.6.0_16-b01)/Java HotSpot(TM) Server VM (build 14.2-b01) , 混合模式)。如何确定我的 VM 是否是为 64 位构建的?
  • 您的响应应该是:java 版本“X”Java(TM) SE 运行时环境(构建 X)Java HotSpot(TM) 64 位服务器 VM(构建 Y,混合模式)

标签: jvm


【解决方案1】:

感谢您的所有意见,伙计们!不过,我的java -version 的输出提到了mixed mode,这意味着它是64 位的。真正的解决方案是添加-d64 以强制它以64 位运行,因此分配4GB。

【讨论】:

  • 表示“混合”模式的事实与您拥有 32 位或 64 位 JVM 的事实无关。这仅意味着您的 JVM 混合了“编译”和“解释”两种执行模式。
【解决方案2】:

我的解决方案基于问题的 cmets:您使用的是 32 位 JVM,因此它不能处理超过 4GB(不包括在内)。尝试安装64位版本

【讨论】:

    【解决方案3】:

    根据java -version的输出,安装了一个32位的JVM。如果它是 64 位的,你应该得到类似 Java HotSpot(TM) 64-Bit Server VM 的东西。

    尝试安装 64 位 JVM,它将解决您的问题。

    【讨论】:

      【解决方案4】:

      使用 -Xmx1024M -XX:MaxPermSize=256M

      【讨论】:

      • 使用代码格式和完整的示例命令行,会使这个答案更好。
      猜你喜欢
      • 2016-06-22
      • 2012-07-18
      • 2016-07-18
      • 2010-10-20
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多