2012-01-16 283 views
7

我正在創建一個非常簡單的應用程序,它讀取並顯示文本文件並在其中搜索。Java JDK 32位與64位

我在問自己是否有興趣向我提出32位和64位版本給用戶。

只有在使用64位版本訪問更多內存堆大小或者是否有其他興趣時纔有所不同?

將在一個64位的JVM 32位已編譯的程序工作(I假設是)

+4

只要您的應用程序是100%純Java,除了可能的堆大小外,沒有多大區別。 – Thomas

+0

只記得32位和64位JRE是單獨安裝的,大多數人只默認安裝了32位(即使在64位機器上)。 – Viruzzo

+0

Thanx爲您的答案。正如我所料,對於純Java來說,這不會改變任何東西(堆大小除外)。 – HpTerm

回答

12

32位和64位之間的唯一的差異的生成的任何程序是機器字的大小,則可尋址內存的數量以及使用的操作系統ABI。使用Java,語言規範意味着除非您使用本機代碼,否則機器字大小和OS ABI的差異根本不重要。 (原生代碼必須的構建與加載它的JVM的字大小相同;您不能在同一進程中混合使用32位和64位構建,而且確實沒有非常奇特的編碼,而您不應該這樣做與Java有關。)

+0

原生字的大小可以對C或C++代碼產生根本性的區別,特別是如果編寫得很糟糕或者寫得很糟糕,但Java代碼根本看不出差異。 –

+0

Thanx的答案。我清楚地知道,在純Java中,這不會改變任何事情。 – HpTerm

+1

@HTTerm:在純Java中,所有變化都是可尋址內存的數量(好)和每個對象的內存數量(不太好)。除非您接近VM限制,否則這些更改都不會導致您可以看到的問題。 –

2

唯一的時代已經擺在我面前的是當有本地庫參與推動它的方式或其他。如果你現在只是在Java領域,那麼除非你需要大於4GB的堆大小,否則幾乎沒有什麼區別。

編輯:差異包括像它使用略多於32位內存的東西,顯着更多,如果你使用6u23之前的版本,並且不使用-XX:+UseCompressedOops。兩者之間也可能存在輕微的性能差異,但再次沒有什麼巨大的。

+0

你沒有說「沒有區別」,而是說「非常小的差別。就我所知,假設純Java,這是非常小的差異。 – HpTerm

+0

@HTTerm查看更新的答案。 – berry120

+1

謝謝你的回答 – HpTerm