2013-05-03 68 views
10

幾年前,我嘗試使用64位JDK,但它確實很麻煩。我應該使用32位還是64位JDK?

你會說現在有多穩定?你會推薦它嗎?我應該安裝64位JDK + eclipse還是堅持32位?另外,除了繞過4 GB的內存限制,還有64位超過32位的優勢嗎?

+0

看到這個 - http://stackoverflow.com/questions/3669778/why-should-i-use-the-64-bit-jdk-over-the-32-bit-version – Coffee 2013-05-03 23:37:09

+1

@Adel:那是在 – user2348638 2013-05-03 23:37:31

+1

內存限制不是每個進程4GB,而是標準的2GB,這是由於內存映射的方式,在Windows和Linux上。兩種操作系統都提供技巧來增加這個限制,但它永遠不會是4GB(更像3GB) – fvu 2013-05-03 23:43:54

回答

10

只有當你想建立,將使用大量的內存(即,超過2GB堆大)的應用程序開始與理會。

允許我引用紅帽:

64位JVM的真正優勢在於,堆的大小遠遠大於2GB可以使用。使用64位JVM的大頁面內存可進一步優化。下圖顯示了從4GB堆大小運行的結果,以2千兆字節爲增量,最大堆數爲20GB。

也就是說,在一個漂亮的圖形:

32 bit vs 64 bit JVMs in performance

見,沒有大的區別。

查看更多(更多圖表,耶!)在:Java Virtual Machine Tuning

5

我覺得答案很簡單。

回答這個問題:「我需要超過4GB的RAM嗎?」。

64位JVM與32位JVM一樣穩定。沒有區別。事實上,運行在64位JVM上的Java應用程序與32位JVM相比將消耗更多的RAM。所有內部數據結構都需要更多的RAM。

我的eclipse運行在64位JVM上。

2

32位和64位之間的唯一的差異建立任何程序都是機器字大小,可尋址存儲器的量,以及操作系統ABI在使用中。使用Java,語言規範意味着除非您使用本機代碼,否則機器字大小和OS ABI的差異根本不重要。 (本機代碼的構建必須與將要加載它的JVM的字大小相同;不能在同一過程中混合使用32位和64位構建,而且實際上不需要非常奇特的編碼,用Java來做這件事。)

64位使用64位指針。如果你有4GB +內存,並且正在運行內存中保存4GB +數據結構的Java程序,那麼64-bitter就可以適應這種情況。大胖指針可以指向4GB +內存空間中的任何字節。

但是,如果你的程序使用較少的內存,並且在運行64位JVM,在將指針仍然佔據64位(8個字節)的每個。這會導致數據結構變大,從而不必要地佔用內存。

4

你要部署到32或64位環境?如果您與生產環境關聯,那麼您的開發環境應該使用相同的環境類型。

如果您是平臺不可知論者,請使用x64,甚至不要考慮它。該平臺成熟穩定。它給你提供了巨大的擴展空間,因爲你可以增加內存並使你的堆更大。沒有人願意告訴CEO,「對不起,我們選擇了x86,不能像我們希望的那樣擴大規模,這是一個爲期一個月的項目計劃,重新測試和重新平臺x64的所有項目。」

相關問題