如何设置真正大的JVM堆大小?

如何设置真正大的JVM堆大小?,jvm,Jvm,根据JVM6文档,服务器类机器默认接收1/4RAM或1GB的初始堆大小。考虑到我们的Solaris 64位服务器有64 GB,初始堆大小默认为256MB。因此,我需要使用4GB的XMX参数手动设置堆大小。但是,当我添加“-Xmx4096M”时,Tomcat不会启动。以下是错误消息: Invalid maximum heap size: -Xmx4096M The specified size exceeds the maximum representable size. Could not cr

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

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

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

我的解决方案基于对这个问题的评论:您使用的是32位JVM,因此它不能处理超过4GB的地址(非包容性)。尝试安装64位版本

根据
java-version
的输出,安装了32位JVM。如果它是64位的,您应该得到类似于Java HotSpot(TM)64位服务器VM的东西


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

谢谢大家的投入!尽管如此,我的
java-version
的输出提到了
mixed mode
,这意味着它是64位的。真正的解决方案是添加
-d64
以强制它以64位运行,从而分配4GB。

使用-Xmx1024M-XX:MaxPermSize=256M

您使用的是什么操作系统?一些较旧的操作系统不允许进程超过2G。Solaris(我刚刚更新了上面的问题)是否运行64位jvm?java-version为我提供:java version“1.6.0_16”/java(TM)SE运行时环境(build 1.6.0_16-b01)/java HotSpot(TM)服务器VM(build 14.2-b01,混合模式)。如何确定我的虚拟机是否为64位构建?您的回答应该是:java版本“X”java(TM)SE运行时环境(构建X)java热点(TM)64位服务器虚拟机(构建Y,混合模式)指示“混合”模式的事实与您拥有32位或64位JVM的事实无关。这只意味着您的JVM混合了“编译”和“解释”两种执行模式。使用代码格式和完整的示例命令行可以更好地回答这个问题。