【发布时间】:2010-12-10 10:07:22
【问题描述】:
在 64 位 Java 上迁移小型独立 Java 应用程序(最大:100-200MB 堆)真的值得吗? 有没有什么特别的优势; 我的观察是,它只会增加应用程序的内存占用。
请发表您的经验/意见。
【问题讨论】:
标签: java
在 64 位 Java 上迁移小型独立 Java 应用程序(最大:100-200MB 堆)真的值得吗? 有没有什么特别的优势; 我的观察是,它只会增加应用程序的内存占用。
请发表您的经验/意见。
【问题讨论】:
标签: java
来自official FAQ:
64 位和 32 位 VM 的性能特点是什么?
通常,与在 32 位 VM 上运行相同的应用程序相比,能够处理大量内存的好处是在 64 位 VM 中性能损失很小。这是因为系统中的每个本机指针占用 8 个字节而不是 4 个字节。这些额外数据的加载会影响内存使用,这取决于在执行期间加载了多少指针,这会导致执行速度稍慢你的 Java 程序。好消息是,在 AMD64 和 EM64T 平台以 64 位模式运行时,Java VM 获得了一些额外的寄存器,可用于生成更高效的本机指令序列。这些额外的寄存器将性能提高到在比较 32 位和 64 位执行速度时通常完全没有性能损失的程度。
当您迁移到 64 位 VM 时,比较在 64 位平台上运行的应用程序与在 SPARC 上运行 32 位平台的应用程序的性能差异大约为 10-20%。在 AMD64 和 EM64T 平台上,此差异范围为 0-15%,具体取决于访问应用程序执行的指针数量。
我会说,如果它没有坏,就不要修理它。
【讨论】:
如果您在 x64 上切换到 64 位,则可以利用 64 位寄存器和其他寄存器。这可能会将性能提高 5%。
您可以使用 -XX:+UseCompressedOops 来使用相同的内存占用空间(它使用 35 位地址空间,32 位值最多 32 GB),但我发现它最终会消耗大约 5% 的性能。
【讨论】: