2013-05-17 51 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

相关问题