64位Java平台的好处

13 java 64-bit

我是java平台的绝对n00b我想知道我是否需要更改代码中的任何内容以获得64位JRE的好处?

或者它是什么时候我用"java -d64"启动它会以某种turbo模式运行?

非常感谢您的帮助

Tni*_*son 13

我以前的版本,虽然不是假的,但很快就被过度简化了.

从32位更改为64位不会自动使您的应用程序运行得更快,在某些情况下可能导致相反的情况.在"否定"方面,对JVM中的内存指针进行解引用可能需要更长的时间,使用64位指针而不是32位.与2 GB堆相比,完全垃圾收集和16 GB堆的压缩可能需要更长的时间.

从积极的方面来看:有64位处理器指令比32位处理器指令更有效.64位JVM将允许您的堆大小比32位大2到32倍,稍微小于4 GB.(如果你有能力购买那么多的RAM)如果堆大小小于4 GB,一些JVM可以使用压缩引用,这样就可以获得64位指令的优势,而无需支付64位的参考价格.

如果你有一个好的JVM,无论堆大小如何,我都会使用64位,只需要准备好你可能不得不因为拥有一个非常大的堆而受到性能影响.


Den*_*nov 8

我不认为64位JVM会获得应用程序的性能吗?怎么样?

事实上,64位处理器有点慢.它们具有更复杂的解码流水线(向后支持32位操作).他们需要更多的内存吞吐量(所有指针都是双倍大小的吗?).你在64位处理器上唯一拥有的是大量的RAM.正如我们所知,大小就是速度.很多RAM可以很好地获得某些应用程序的性能(如果应用程序可以使用它).所以64位 - 没有.很多内存 - 肯定是的.

64位处理器还可以做得更快.原子写入/读取64位数字.如果你使用64位数字(在java中长)64位处理器会更好,因为他们有机器CAS指令来处理这种数字.

  • AMD64指令集向程序公开了更多寄存器,从而可以提高执行速度 (2认同)

pde*_*eva 7

不,你不需要改变任何东西.使用64位没有固有的好处.实际上它会使你的程序在内存中变大,因为所有指针都将变为64位宽而不是32位.

当您进行64位计算时,唯一的优势就在于,例如在代码中使用大量"long",或者您的应用需要超过4gb的内存.


Hen*_*aul 5

因为执行代码的JVM应该表现相同(整数总是32位签名等),所以无论您运行什么平台,您的代码都保证(理论上)运行相同.

32/64位差异在于JVM如何优化运行时.因此,虽然执行的字节码保持不变,但它可能(或可能不)以不同的方式进行优化.

简而言之,运行Java的64位系统可能比32位系统等效系统更快地执行代码.


jjn*_*guy 3

你应该什么都不用改变。与 C 或 C++ 不同,Java 有一个为其编写的规范,可确保无论您使用什么平台,整数(和其他数据类型)始终具有相同的长度。