2013-07-26 66 views
0

我有一個程序,非常消耗內存,並認爲使用-Xmx2048m爲java jvm分配更多的最大內存。 但是當開始時,我得到'無法爲對象堆預留足夠的空間'錯誤。java jvm內存分配

當嘗試多個值,發現我最大的價值是-Xmx1560m,它開始。但我喜歡分配2GB。使用-Xmx1560m啓動java進程後,我有6GB物理內存,Taskmanager顯示3400MB可用。

有誰知道爲什麼我不能分配2GB?

+0

增加交換文件:http://windows.microsoft.com/en-my/windows-vista/change-the-size-of-virtual-memory – Flot2011

回答

1

32位窗口將程序限制在大約1.2 - 1.5 GB的連續內存。即使您擁有64位操作系統,但您正在模擬32位JVM的32位環境,此限制也適用。

避免此限制的方法是使用64位操作系統和64位JVM,根據您購買的Windows的風格,限制要高得多。專業版僅限於192 GB。

+0

非常感謝。你給我帶來了正確的道路。我很快就將答案標記爲有用。但問題很快。目前,我有一個穩定的開發環境,用於android應用程序編程的32位JVM和eclipse。你怎麼看,是否可以並行安裝jvm64位以並行執行我的nonandroid java程序並使用相同的eclipse? (通過配置特殊的Java應用程序指向64位jvm)? –

+0

@ user1344545您可以隨意安裝儘可能多的版本,直到磁盤空間不足。你只需要真正需要每個版本的最新更新,你可能想運行。 AFAIK你可以使用64位版本來做你的android開發。 –