【问题标题】:Benefits of 64bit Java platform64 位 Java 平台的优势
【发布时间】:2010-09-17 00:59:18
【问题描述】:

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

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

非常感谢您的帮助

【问题讨论】:

    标签: java 64-bit


    【解决方案1】:

    您应该什么都不做。与 C 或 C++ 不同,Java 为其编写了一个规范,以确保无论您在什么平台上,int(和其他数据类型)的长度始终相同。

    【讨论】:

      【解决方案2】:

      是的,您无需更改任何内容。不同的是 JRE,而不是你写的代码。

      【讨论】:

        【解决方案3】:

        因为执行代码的 JVM 的行为应该相同(整数始终是 32 位签名等),所以无论您在什么平台上运行,都可以保证(理论上)您的代码以相同的方式运行。

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 至少在 Windows 上,使用超过 1.5GB 的内存的可能性不是一个好处吗? 32 位 Java 进程有一些这样的限制。 mystyleit.com/blogs/mystyleit/archive/2009/05/27/…
          • 最新的 64 位 JVM 在分配引用方面不是更聪明一点吗?即,如果不需要完整的 64 位,则仅使用 32 位引用。我想我在什么地方读到过。
          【解决方案5】:

          我以前的版本,虽然不是假的,但写得很快。

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

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

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

          【讨论】:

            【解决方案6】:

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

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

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

            【讨论】:

            • AMD64 指令集向程序公开了更多寄存器,从而可能提高执行速度
            【解决方案7】:

            您的应用程序代码中是否有任何 JNI?那么也许您需要担心 32 位与 64 位本机二进制文件。

            32 或 64 与您的 Java 代码相同。以前的海报似乎已经很好地涵盖了性能方面。

            【讨论】:

              【解决方案8】:

              我发现 64 位 JVM 比 32 位版本慢。然而,在最新版本的 Java 6 update 14 中,我发现我的许多测试在 64 位版本上比 32 位版本要快一些。无论哪种方式,只有 5% 到 10% 的差异。

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

              主要区别在于如果您需要 4 GB 或更多,则可以使用更多内存。

              【讨论】:

                【解决方案9】:

                试试这个:

                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);
                

                }

                在 32 位和 64 位中并一笑置之。

                【讨论】:

                • 在这种情况下,对差异的描述将被证明是有用的。
                猜你喜欢
                • 1970-01-01
                • 2011-03-21
                • 2011-09-07
                • 1970-01-01
                • 1970-01-01
                • 2010-10-11
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多