2009-05-26 203 views
16

我运行以下命令的Java代码:避免初始内存堆大小错误

$ java -Xms4G -Xmx4G myjavacode 

我的CPU的内存容量为6GB。

但是它始终无法执行给我这个 错误消息:

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

有什么办法来设置Java的选项,这样我们就可以 执行的代码?

+0

您正在使用哪种JVM? – 2009-05-26 05:14:49

+0

@roland:jdk1.6.0_14/bin/java – neversaint 2009-05-26 05:50:35

+4

您确定您正在运行64位JVM吗? 32位内存无法解决这么多内存。 – diciu 2009-05-26 05:50:39

回答

15

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

3

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

另外,请记住在做这些之前将ulimit设置得更高。

9

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