2013-05-17 49 views
0

嘗試運行帶有1G內存的java時出現以下錯誤。Java:無法爲對象堆預留足夠的空間

C:\>java -verbose -Xmx1G 

當我運行它,我收到以下消息:

Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

它工作正常,最大內存設置爲768M。我正在使用Java 7(build 1.7.0_15-b03)。

這裏是我的系統的信息

Total Physical Memory:  3,510 MB 
Available Physical Memory: 2,393 MB 
Virtual Memory: Max Size: 2,048 MB 
Virtual Memory: Available: 1,965 MB 
Virtual Memory: In Use: 83 MB 
OS: Windows XP. 
+1

你試過1000M(1G)嗎?可能是Java不明白1G – sanbhat

+0

像sanbhat說的那樣,嘗試運行:-XX:MaxHeapSize = 1024m –

+0

但是,如果這是問題,錯誤信息就會這麼說... –

回答

1

堆不僅取決於可用的RAM或物理內存。 32位JVM的最大理論堆限制是4G。由於可用交換,內核地址空間使用,內存碎片和虛擬機開銷等各種附加限制,實際上限制可能會低得多。

+0

它在兩天前在同一臺機器上工作。我可以得到更多的指針,以便我可以看到哪個參數或配置更改導致此問題。我已經嘗試更改虛擬內存設置,並將其增加到3.5GB並重新啓動我的機器並嘗試。這也不起作用 –

+0

當我從Java 6升級到Java 7時遇到了這個問題。我之前配置了1GB堆,現在使用Java 7,但只有在降低堆大小的情況下才起作用。我猜Java的新版本本身使用更多的內存。 – Ryan

相關問題