2011-02-02 25 views
1

我已經在使用-Xmx2G。我還能繼續增加嗎?是否依賴於我使用的機器java堆的上限

+1

在32位系統上,限制爲2 Gb,如果您需要更多,則需要64位操作系統。看看@dogbane的答案。 – vz0 2011-02-02 12:07:25

回答

6

Java Tuning White Paper

4.1.2堆漿紗

一個Java 應用程序的最大堆大小是由三個 因素的限制:過程數據模型 (32位或64位)以及相關聯的操作系統 限制, 系統上可用的虛擬內存量以及物理量 系統上可用的內存。

的 大小Java堆的用於特定應用 可以永遠不會超過或甚至 到達處理的數據模型的最大虛擬地址空間 。對於32位過程模型,最大 進程的虛擬地址大小爲 ,通常爲4 GB,但某些運行的 系統將此限制爲2 GB或3 GB。 對於2 GB限制,最大堆大小通常爲 -Xmx3800m(1600m)),但實際限制取決於應用程序的 。

+0

`儘管一些操作系統將此限制爲2 GB或3 GB`。非常真實。看到OS + Service Pack列表與JVM版本和hw體系結構一起列出實際的限制會很有趣。 – 2011-02-02 12:17:45

0

爲什麼不嘗試通過運行具有不同堆選項的java直到它投訴。當然,它的依賴,如果你的機器只有64k,那麼你不能很好地期待它具有相同的多GB容量的堆!

+0

實驗是不可能的,因爲我應該在不同的機器上運行我的程序,我現在還沒有訪問 – javanerd 2011-02-02 12:03:12