2011-05-25 40 views
1

當我有8GB可用時,我的虛擬內存不會高於2GB。
我正在運行安裝了Java JRE 1.6_25的Ubuntu 10.10 x86。如何在Ubuntu上獲得高於2GB的Java VM?

當我嘗試啓動.jar文件時,它只是一個瞬間崩潰。

它工作得很好,當我設置的虛擬機2048M
這些都是我用來定義VM -Xmx4096M -Xms4096M

感謝任何幫助:)

+0

如果您沒有在內核中啓用[PAE](http://en.wikipedia.org/wiki/Physical_Address_Extension),Ubuntu將永遠無法支持超過4GB的RAM。即使你這樣做,JVM可能也無法訪問它; IIRC,必須準備一個程序讓PAE充分利用它,如果JVM不是,則必須考慮必須存儲在內存中的所有其他內容所需的psace,例如JVM本身。只升級到64位Ubuntu和JVM可能會更容易一些。 – 2011-05-25 21:11:53

+0

PAE只允許內核管理更多。每個單獨的過程仍然無法突破極限。 – 2011-05-25 21:14:17

+0

葉,也許我應該去64,是懶惰下載一個新的副本。 – NoobiCake 2011-05-25 21:16:39

回答

6

如果這是一個32位的虛擬機的參數,你贏了不會高於2G(或者接近3G,內核配置爲3G/1G用戶空間/內核地址空間拆分)。沒有辦法讓32位處理器使用超過2G(或具有正確設置的3G)真實存儲器。

你需要一個64位內核和JVM才能達到4G的堆空間(並且遠遠超出這個範圍)。

有關32位應用程序的Linux內存限制的更多信息,請參閱此問題:Memory limit to a 32-bit process running on a 64-bit Linux OS。 (接受的答案同時涉及32位和64位內核,它也表明有一些補丁可以在32位內核上爲用戶空間接近4G,但我不認爲這些類型的東西會進入Ubuntu內核 - 類似於nich服務器的東西。)。

+0

另外還有一個64位JVM,它允許你有2^64字節)的內存。 – dhblah 2011-05-25 21:09:07

+0

是不是很難找到用於Ubuntu的JRE的x64版本? – NoobiCake 2011-05-25 21:14:31

+0

@NoobiCake:我不知道,我不使用Ubuntu。有askubuntu.com這是一個stackechange網站,如果你找不到它/安裝它。請注意,您需要64位Ubuntu安裝才能運行64位JVM。 – Mat 2011-05-25 21:17:56

0

如果您需要一個大型的Java程序,您應該強烈考慮遷移到64位操作系統。這將允許您使用允許大於2Gb的Java程序的64位JVM。

我不知道從32位輕鬆遷移到64位Ubuntu的過程,但您可以保存您的主目錄然後重新安裝。

然後,您可以輕鬆安裝OpenJDK Java,並且可以更加方便地安裝Sun JDK。