2009-05-26 201 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應該不會有任何問題。