【问题标题】:64-bit Java Apps: Is a 64-bit OS, 64-bit JRE and 64-bit Application required?64 位 Java 应用程序:是否需要 64 位操作系统、64 位 JRE 和 64 位应用程序?
【发布时间】:2010-12-11 10:56:30
【问题描述】:

这个问题一般是关于 64 位 Java 应用程序的,尽管我是因为使用 Netbeans/Eclipse 才遇到这个问题的。我正在使用带有 64 位操作系统(Windows 7)的 64 位处理器。我想用超过 4GB 的堆内存(即使用 Xmx 标志)运行 Netbeans/Eclipse,但我遇到了一些困惑。似乎没有 64 位版本的 Netbeans,虽然有用于其他操作系统的 64 位版本的 Eclipse,但没有用于 Windows 的版本。此外,我找不到最新的 JRE/JDK 的 64 位版本(我已经阅读了提到这些存在的网站,所以我不确定 Sun 是否只是暂时取消了它们)。

既然我已经解释了我的情况,我的问题如下:

  1. 运行具有超过 4GB 堆内存的 Netbeans/Eclipse/(随机 Java 应用程序)需要什么软件?拥有 64 位操作系统就足够了吗?我是否还需要 64 位 JRE?
  2. 我认为 Java 源代码和 Java 字节码是独立于体系结构的,因为在使用 32 位或 64 位 JDK 编译的 Java 程序中,可以在具有 32 位或 64 位的不同机器上运行杰瑞。如果这是真的,为什么 Eclipse 有 32 位版本和 64 位版本(我知道他们没有适用于 Windows 的版本,但他们有适用于 Linux 的版本)?这是否意味着 Eclipse 很可能有原生库,而 32 位和 64 位对这方面很重要?

提前致谢,
red.october

更新 1:
好的,事实证明有一个 64 位版本的 Eclipse for Windows,但由于某种原因它被埋得很深(至少我没有看到它从主页链接到哪里)。经过一番搜索,我找到了一个blog post,上面说您可以在Eclipse Downloads 获得适用于Windows 的64 位Eclipse。该链接指向一个页面,其中包含指向许多不同版本的链接——我刚刚选择了最新的稳定版本(在本文发布时为 3.5.1)。第二页列出了 Eclipse 3.5.1 的各种下载,对于每个下载,您都有多种架构(32 位和 64 位)和操作系统(例如 Windows、Linux)可供选择。我个人选择了 Eclipse SDK 下载——它附带“Eclipse 平台、Java 开发工具和插件开发环境,包括源代码以及用户和程序员文档”。我不确定我是否需要源代码或文档,但我想我以后可以随时删除它。

【问题讨论】:

    标签: java eclipse netbeans 64-bit


    【解决方案1】:

    是的,您需要一个 64 位 JVM 来利用所有内存。我不了解您可以为 Windows 获得的最新信息,所以我会让其他人回答这个问题。

    但是,我认为您找不到 64 位 netbeans 的主要原因是它是 100% 纯 Java 和架构独立的。 Eclipse 提供了一个具有更原生外观 (SWT) 的替代 GUI 框架,并将其用于开发环境本身。 将 Java 应用程序链接到本机库后,您需要为正确的架构分发库,因此 Eclipse 分发的架构依赖性(您的第二项)。

    【讨论】:

    • 这是否意味着在各自架构的eclipse中分发我需要开发的java应用?
    • @Chris:不,一点也不。您只需确保平台二进制文件随您的产品一起提供并正确加载。那里有很多页面描述了如何做到这一点,我相信它也在 SWT 常见问题解答中 (eclipse.org/swt/faq.php)
    • 感谢您的澄清,也感谢链接。在过去的几年里,我在服务器端花了很多时间,有时我忘记了为客户端打包。
    【解决方案2】:

    您可以在 Windows 7 中运行 64 位 JDK 或 JRE,我现在正在运行它们。

    Java SE Development Kit 6u16

    Java SE Runtime Environment 6u16

    从下拉菜单中选择您可以选择 Windows 32 或 64 位的操作系统。

    【讨论】:

    • 我可能应该把这个问题分开 - Fredrik 回答了我的一般问题,但你回答了我如何获得 64 位 JDK6(所以我给两个答案都加了 +1)。原来我的问题是我尝试下载 JDK+Netbeans 组合 EXE,而该 EXE 自动附带 32 位版本的 JDK。谢谢。
    【解决方案3】:

    没有 64 位 java '应用程序'这样的东西。 Java 编译的类在 java 字节码中,句号。在 64 位 JVM(这又需要 64 位操作系统)上执行程序可以让它们访问更多内存,但程序不可见差异,因为所有对内存操作的访问都是隐藏的,并且所有数据类型都是相同的。

    另见this question

    【讨论】:

    • @Jherico:在这种情况下,我觉得你的答案是语义爸爸,他想访问超过 32b JVM 限制的内存量,并揭穿你没有这样的想法,他可以对每个变量使用 Long,它确实是一个 64b Java 应用程序。 (毫无意义,但可能。)
    • @sudo noob:我认为 Jherico 正确回答了我的问题。没有本机代码的 Java 应用程序没有 32 位或 64 位版本(这就是我所要求的)——你编写和编译一次,它可以访问多少内存等事情取决于 JVM和硬件平台。我不认为 64 位应用程序中的 64 意味着所有数据类型现在都是 64 位长度(我认为 char 在 64 位 C 应用程序中仍然是 8 位长度)。
    猜你喜欢
    • 2011-07-07
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多