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

7
根据JVM 6文档,服务器类机器默认接收1/4的RAM或1GB的初始堆大小。考虑到我们的Solaris 64位服务器有64GB,初始堆大小将默认为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 GB的内存。 - John
Solaris(我刚刚更新了上面的问题) - user689842
1
你是否正在运行64位的JVM? - Andrzej Bobak
java -version 告诉我:java version "1.6.0_16" / Java(TM) SE Runtime Environment (build 1.6.0_16-b01) / Java HotSpot(TM) Server VM (build 14.2-b01, mixed mode)。我该如何查找我的虚拟机是否为64位构建? - user689842
java版本“X”Java(TM) SE运行时环境(版本X)Java HotSpot(TM) 64位服务器虚拟机(版本Y,混合模式) - Andrzej Bobak
4个回答

7

感谢大家的意见!不过,我的 java -version 输出中提到了 mixed mode,这意味着它是64位的。真正的解决方案是添加 -d64 来强制它以64位运行,并因此分配4GB的内存。


7
“mixed”模式的标记与您使用32位或64位JVM无关。它仅表示您的JVM混合了两种执行模式,“编译”和“解释”。请注意,此翻译不包括解释或其他内容。 - manash

5

根据问题评论,我的解决方案是:由于您使用的是32位JVM,因此无法处理超过4GB(不包括)的内存。尝试安装64位版本。


4
根据 java -version 命令的输出,安装了32位的JVM。如果是64位的,应该会显示类似于 Java HotSpot(TM) 64-Bit Server VM 的信息。尝试安装一个64位的JVM,即可解决问题。

0

使用 -Xmx1024M -XX:MaxPermSize=256M


使用代码格式化和完整的示例命令行会使这个答案更好。 - jpaugh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接