Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
64位Java平台的优势_Java_64 Bit - Fatal编程技术网

64位Java平台的优势

64位Java平台的优势,java,64-bit,Java,64 Bit,我绝对是java平台的n00b 我想知道我是否需要更改代码中的任何内容以获得64位JRE的好处 或者,当我用“java-d64”启动它时,它会以某种涡轮模式运行吗 非常感谢您的帮助您应该什么都不做。与C或C++不同,java有一个专门为它写的规范,它确保无论你在哪个平台上,int(和其他数据类型)都是相同的长度。 是的,你不需要改变任何东西。不同的是JRE,而不是您编写的代码。因为执行代码的JVM的行为应该是相同的(整数总是32位有符号的,等等),所以您的代码(理论上)可以保证以相同的方式运行,

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

或者,当我用“java-d64”启动它时,它会以某种涡轮模式运行吗


非常感谢您的帮助

您应该什么都不做。与C或C++不同,java有一个专门为它写的规范,它确保无论你在哪个平台上,int(和其他数据类型)都是相同的长度。

是的,你不需要改变任何东西。不同的是JRE,而不是您编写的代码。

因为执行代码的JVM的行为应该是相同的(整数总是32位有符号的,等等),所以您的代码(理论上)可以保证以相同的方式运行,无论您在什么平台上运行它

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


简而言之,运行Java的64位系统执行代码的速度可能比同等的32位系统快。

不,您不需要做任何更改。 使用64位并没有固有的好处。事实上,它将使您的程序在内存中更大,因为所有指针将变为64位宽,而不是32位宽


唯一的优势是当您进行64位计算时,例如在代码中使用大量的“long”,或者如果您的应用程序需要超过4gb的内存。

我以前的版本虽然没有错误,但很快写得过于简单

将32位更改为64位不会自动使应用程序运行更快,在某些情况下可能会导致相反的结果。 在“消极”方面 使用64位指针在JVM中执行内存指针的反引用可能比使用32位指针花费更长的时间。 16 GB堆的完全垃圾收集和压缩可能需要比2 GB堆更长的时间

在积极方面: 有64位处理器指令比32位指令更有效。 64位JVM将允许堆的大小是32位JVM的2^32倍,略小于4 GB。(如果您有能力购买该数量的RAM) 如果堆大小小于4 GB,某些JVM可以使用压缩引用,这样就可以利用64位指令的优势,而无需支付64位取消引用的费用


如果你有一个好的JVM,无论堆大小如何,我都会选择64位,只要做好准备,你可能会因为堆太大而受到性能的影响。

我不认为64位JVM会提高应用程序的性能?怎么做

事实上,64位处理器要慢一点。它们有更复杂的解码管道(向后支持32位操作)。它们需要更多的内存吞吐量(所有指针的大小都是原来的两倍?)。您在64位处理器上唯一拥有的就是大量的RAM。正如我们所知,规模就是速度。很多RAM可以使某些应用程序的性能得到很好的提高(如果应用程序可以使用它的话)。所以64位-不。大量的RAM-肯定是的


还有一件事64位处理器可以做得更快。64位数字的原子写入/读取。如果您使用64位数字(在java中很长),64位处理器会更好,因为它们有处理这种数字的机器CAS指令。

您的应用程序代码中有JNI吗?然后,也许您需要担心32位与64位本机二进制文件


32或64对于Java代码来说都是一样的。以前的海报似乎已经很好地涵盖了性能方面。

我发现64位JVM比32位版本慢。然而,在最新版本Java6Update14中,我发现我的许多测试在64位版本和32位版本中都稍微快一些。无论哪种方式,差别都只有5%到10%

您的程序使用32位还是64位版本取决于您使用的JVM的选择。如前所述,您需要检查是否有适当的共享库。(或最好没有)

主要区别在于,如果需要4 GB或更大的容量,可以使用更多的内存esp。

尝试以下方法:

public class Benchmark {
public static void main(String args[]) {
long time = System.currentTimeMillis();
for (int a = 1; a < 900000000; a++) {
    for (int b = 1; b < 20; b++) {
    }
}
long time2 = System.currentTimeMillis() - time;
System.out.println("\nTime counter stopped: " + time2);
公共类基准{
公共静态void main(字符串参数[]){
长时间=System.currentTimeMillis();
对于(int a=1;a<900000000;a++){
对于(intb=1;b<20;b++){
}
}
长时间2=System.currentTimeMillis()-时间;
System.out.println(“\n时间计数器停止:“+time2”);
}


使用32位和64位的Java进程,并嘲笑其差异。

至少在Windows上,使用超过1.5GB内存的可能性不是一个好处吗?32位Java进程有一些这样的限制。但是,最新的64位JVM在分配引用方面不是有点聪明吗?也就是说,如果不需要完整的64位,只使用32位引用。我想我在某个地方读到过。在这种情况下,对差异的描述将证明是有用的。AMD64指令集向程序公开了更多的寄存器,从而导致潜在的执行速度提高