2010-12-10 41 views
3

是否真的值得在64位Java上遷移小型獨立Java應用程序(Max:100-200MB堆)。 有沒有什麼特別的優點;我的觀察是,它只是增加了應用程序的內存佔用量。適用於小型獨立應用程序的64位Java版本

請發表您的體驗/意見。

回答

5

official FAQ

什麼是64位與32位虛擬機的性能特點?

一般來說,能夠處理大量內存的好處在64位虛擬機中與在32位虛擬機上運行同一應用程序相比,性能損失較小。這是因爲系統中的每個本地指針佔用8個字節而不是4個。加載這些額外的數據會影響內存使用量,這會導致執行速度稍慢,具體取決於執行期間加載的指針數量你的Java程序。好消息是,在64位模式下運行的AMD64和EM64T平臺上,Java VM獲得了一些額外的寄存器,可用於生成更高效的本機指令序列。這些額外的寄存器提高了性能,在比較32位和64位執行速度時,通常沒有性能損失。
比較在64位平臺上運行的應用程序與SPARC上的32位平臺的性能差異,當您移至64位虛擬機時,其性能差異爲10-20%。在AMD64和EM64T平臺上,根據應用程序執行的指針數量的不同,這個差異範圍爲0-15%。

我想說,如果沒有損壞,請不要修復它。

3

如果您在x64上切換到64位,則可以利用64位寄存器和附加寄存器。這可能會使性能提高5%。

您可以使用-XX:+UseCompressedOops來使用相同的內存佔用空間(它使用35位地址空間,最多32 GB的32位值),但我發現它最終性能成本約爲5%。

+0

這個答案的一個關鍵點是;使用32位引用的64位JVM可以尋址32 + 3位地址空間,因爲它可以假定對象地址的最低3位是0.它可以在每個對象與8字節邊界對齊時執行此操作,不是1字節的邊界。這允許JVM有一個地址爲35位或接近32 GB的堆。 – 2013-04-16 06:48:50

相關問題