避免初始内存堆大小错误

时间:2009-05-26 05:11:32

标签: java memory-management

我使用以下命令运行Java代码:

$ java -Xms4G -Xmx4G myjavacode

我的cpu的RAM容量是6GB。

然而它总是无法执行给我这个 错误讯息:

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

有没有办法设置Java选项,以便我们可以 执行代码?

3 个答案:

答案 0 :(得分:17)

您已超出JVM的最大堆大小。这是JVM和OS相关的。在大多数32位系统中,无论可用的物理内存如何,最大值都是2Gb。

答案 1 :(得分:11)

默认情况下,Java将以32位模式运行。一定要给它-d64选项,使其进入64位模式。一旦进入64位模式,分配6GB JVM就不会有任何问题。

答案 2 :(得分:4)

实际上,32位系统上的最大内存大小可能会有所不同,最高可达4 GB,但2 GB是一个常见值。通常可以重新链接内核以将其增加到3或3.5 GB。当然,问题是你没有地址空间来映射更多内存。你试过一台64位机器吗?

此外,请记住在执行此操作之前将ulimit设置得更高。