2012-04-15 70 views
0

我在32位Ubuntu系統上運行礦工服務器,如果我升級到64位什麼是我可以給java的最大內存?我希望它具有大約12吉ram,但我不能在32位上做到這一點你可以給java的最大內存?

+0

如果您的堆大小小於32 GB,64位Java運行效率更高,但大多數處理器的理論限制爲256 TB(虛擬內存限制)我創建的最大JVM內存大小爲8 TB。 – 2012-04-15 07:04:16

回答

2

64位系統可以解決的ram數量實際上沒有最大值。您將只能通過計算機的硬件停止。如果你在命令中使用了正確的開關,我不認爲java有最大數量的所有RAM。

http://en.wikipedia.org/wiki/64-bit

+1

該限制與您的硬件無關。它直接關係到你的操作系統支持多少虛擬內存(我猜你可以爭論與硬件有關,但不像你想的那樣)。 – 2012-04-15 01:29:23

+1

這與硬件非常相關 - 從「軟件」不是「內存」的意義上說,內存不是「軟件」。基於處理器架構和對物理硬件的任何限制,O/S可以使存儲器具有一定的地址可尋址性,但所有存儲器頁遲早要被物理存儲器或某種形式的尋呼空間支持。 – 2012-04-15 02:06:41

0

Java Tuning白皮書:

對於一個32位的過程模型,該過程的最大虛擬地址大小通常是4 GB,儘管某些操作系統限制這2 GB或3 GB。對於2 GB限制,最大堆大小通常爲-Xmx3800m(1600m)),但實際限制取決於應用程序。對於64位過程模型,最大值基本上是無限的。

但事實是,如此巨大的堆內存使用量(12GB)會適得其反。運行很長時間後,應用程序花費在垃圾回收上的時間將會消除可用內存太多的影響。

+2

這取決於。可以對Java進行編碼,因此幾乎沒有垃圾收集,因此它不會讓你的生活變得悲慘。 – 2012-04-15 01:32:52

+0

有人在糟糕的一天? Java不分配內存 - 它分配的內存可以是物理內存(RAM ...)或虛擬(調頁空間等) – 2012-04-15 01:59:09

+0

Oscar:那麼你是不是已經開始對我的答案進行週轉和下調投票了?不成熟多少? – 2012-04-15 02:32:43

1

要說清楚,「硬件」包括分頁/交換空間,所以如果你實際需要12GB的內存,只有8GB內存,你需要確保有4GB的備用交換空間,以便Java成功分配額外的內存。

+0

好吧,這個倒退是荒謬的。 實際限制取決於可用的物理內存,調頁空間以及用戶進程的任何資源限制。它不是「實質上無限的」 - 遲早要允許的頁面必須分配和支持某些東西。 – 2012-04-15 02:03:14

相關問題