如何设置一个非常大的 JVM 堆大小?
Posted
技术标签:
【中文标题】如何设置一个非常大的 JVM 堆大小?【英文标题】:How to set up a really big JVM heap size? 【发布时间】: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,混合模式) 【参考方案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
【讨论】:
使用代码格式和完整的示例命令行,会使这个答案更好。以上是关于如何设置一个非常大的 JVM 堆大小?的主要内容,如果未能解决你的问题,请参考以下文章