【问题标题】:Why should I use the 64-bit JDK over the 32-bit version?为什么我应该使用 64 位 JDK 而不是 32 位版本?
【发布时间】:2011-04-09 20:17:56
【问题描述】:

我使用 Eclipse 和 64 位 Windows 并开发 Java 桌面应用程序。到目前为止,我只使用了 32 位的 JDK,但是 Java 开发是否有任何理由更改为 64 位的 JDK?

【问题讨论】:

标签: 64-bit java


【解决方案1】:

试试这个:

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 位中并一笑置之。

【讨论】:

  • 这是怎么回事?这很耐人寻味。我用 JDK 8 的 32 位和 64 位版本对此进行了测试。我认为 64 位版本能够更好地确定什么是无用的工作,因为它似乎根本没有做循环。
  • 你为什么不告诉我们有什么区别?
【解决方案2】:

不,对于您的开发时间活动,32 位可能就足够了。

最新的 JVM 支持指针压缩,但除此之外,应用程序的 64 位版本需要更多内存才能运行。如果您的应用程序需要寻址更多内存(32 位应寻址 4 Gb,但操作系统考虑有时会减少),请仅使用 64 位。

除了浪费一点内存之外,64 位版本应该不是问题,但有趣的是,我听到抱怨的通常坚如磐石的 JVM 的所有莫名其妙的崩溃都在 64 位版本中。可能是操作系统或其他因素,但如果你没有理由使用 64 位,那何必碰运气呢?

【讨论】:

  • 32 位应用程序在 Windows 上只能访问 2GiB 的内存。
  • @Locutus 除非他们知道大地址。
  • 这个答案现在正好 6 岁,仍然是谷歌的第一个热门。埃里克森,你介意更新你的答案吗? (即使只是说你说的在2016年仍然成立!虽然我有点怀疑。)
【解决方案3】:

主要原因是如果您想编写一个能够使用大量内存(例如超过 4GB,或者您的操作系统上的每个进程限制是什么)的应用程序。

【讨论】:

  • 迟到了,但对于其他偶然发现此线程的人:32 位操作系统的最大容量为 4GB,正确,但安装了 PAE,总计达到 32GB,每个进程最大 3GB限制——例如,在 servlet 环境中绰绰有余。 2011 年,仍然看不到企业之外 64 位服务器操作系统的常见用例;几乎没有性能优势,而且内存消耗更高,不,谢谢...
  • 抱歉……我知道这已经过时了,但是……你说的是 2011 年,但仍然看不到企业之外 64 位操作系统的常见用例吗?大多数时候我的笔记本电脑有 16gb 内存,64bit win 7 使用 7-10gb 内存。我经常打开多个开发环境(Eclipse、Visual Studio 2010/2012)、浏览器、图像编辑器等。我讨厌不得不回到我的 32 位工作计算机,因为我只能运行一些程序而没有开始页面错误。
  • 另外,如果你在谈论 x86/x86-64,它就不是那么明确了。由于 x86-64 架构具有更多寄存器等,因此您还可以使用 64 位获得一些性能优势,可以抵消更大的内存需求等。如果您在 SPARC 之类的东西上运行,那么您不需要64 位,除非你需要内存空间。
  • @jack 即使使用 64 位 Windows,您仍然可以运行 32 位 JVM。不要混淆两者。
  • @ThorbjørnRavnAndersen - 嗯,我不确定你的意思 - 我一直在运行 64 位 Windows 和 32 位 JVM。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 2011-03-08
  • 2012-01-10
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多