如何设置一个非常大的JVM堆大小?

问题描述:

根据JVM 6文档,服务器级机器默认接收的初始堆大小为1/4 RAM或1GB。考虑到我们的Solaris 64位服务器具有64 GB,初始堆大小默认为256MB。因此,我需要使用4GB的XMX参数手动设置堆大小。虽然,当我添加“-Xmx4096M”时,Tomcat无法启动。这里是错误信息:如何设置一个非常大的JVM堆大小?

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

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

+0

您使用的是什么操作系统?一些较旧的操作系统不允许进程超过2 Gig。 – John 2012-07-09 15:26:44

+0

Solaris(我刚更新了上面的问题) – Pomario 2012-07-09 15:27:41

+1

你是在运行一个64位的jvm吗? – 2012-07-09 15:28:51

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

+7

事实上它显示“混合”模式与您拥有32位或64位JVM的事实无关。这只意味着您的JVM将“编译”和“解释”两种执行模式混合在一起。 – 2012-07-09 16:11:42

我的解决方案基于以下问题的评论:您使用的是32位JVM,因此它的地址不能超过4GB(不含)。尝试安装64位版本

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

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

使用-Xmx1024M -XX:MaxPermSize参数= 256M

+0

使用代码格式和一个完整的示例命令行,将使这个答案好得多。 – jpaugh 2016-07-23 02:20:25