2010-12-10 45 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

相关问题