13

多年前,我尝试过 64 位 JDK,但它确实有问题。

你会说它现在有多稳定?你会推荐它吗?我应该安装 64 位 JDK + eclipse 还是坚持 32 位?另外,除了绕过 4 GB 内存限制之外,64 位比 32 位有什么优势吗?

4

5 回答 5

11

如果您想构建一个使用大量内存(即大于 2GB 的堆)的应用程序,请仅开始担心这一点。

请允许我引用红帽的话:

64 位 JVM 的真正优势在于可以使用远大于 2GB 的堆大小。带有 64 位 JVM 的大页面内存提供了进一步的优化。下图显示了从 4GB 堆大小(以 2 GB 为增量)到 20GB 堆运行的结果。

那,在一个漂亮的图表中:

32 位与 64 位 JVM 的性能对比

看,差别不大。

查看更多(更多图表,耶!):Java 虚拟机调优

于 2013-05-03T23:50:12.323 回答
5

我认为答案很简单。

回答问题:“我需要超过 4GB 的 RAM 吗?”。

64 位 JVM 与 32 位 JVM 一样稳定。没有区别。事实上,与 32 位 JVM 相比,在 64 位 JVM 中运行的 Java 应用程序将消耗更多 RAM。所有内部数据结构都需要更多 RAM。

我的 Eclipse 在 64 位 JVM 中运行。

于 2013-05-03T23:40:47.223 回答
4

您打算部署到 32 位还是 64 位环境?如果您与生产环境相关联,那么您的开发环境应该使用相同的环境类型。

如果您与平台无关,请使用 x64,甚至不要考虑它。平台成熟稳定。它为您提供了巨大的扩展空间,因为您可以添加内存并使堆更大。

没有人愿意对 CEO 说:“抱歉,我们选择了 x86,但无法像我们希望的那样扩大规模。这是一个为期一个月的项目项目,旨在为 x64 重新测试和重新构建一切平台。”

于 2013-05-03T23:59:51.343 回答
2

任何程序的 32 位和 64 位版本之间的唯一区别是机器字的大小、可寻址内存的数量和使用的操作系统 ABI。对于 Java,语言规范意味着机器字长和操作系统 ABI 的差异根本不重要,除非您也使用本机代码。(本地代码必须构建为与将加载它的 JVM 的字长相同;如果没有非常奇特的编码,您不能在同一进程中混合 32 位和 64 位构建,而且您应该不会用 Java 来做这件事。)

64 位使用 64 位指针。如果您有 4GB 以上的 RAM,并且正在运行将 4GB 以上的数据结构保存在内存中的 Java 程序,那么 64 位将适应这种情况。大胖指针可以指向 4GB+ 内存空间中的任何字节。

但是如果您的程序使用较少的内存,并且您运行 64 位 JVM,则每个指针仍将占用 64 位(8 个字节)。这将导致数据结构变大,从而不必要地占用内存。

于 2013-05-03T23:45:40.233 回答
0

我刚刚在 32 位 JDK (jdk-8u281-windows-i586) 和 64 位 JDK (jdk-8u281-windows-x64) 中编译了一个 MQTT 客户端。生成的类文件具有匹配的 MD5 校验和。

仅供参考,在您的系统上拥有多个 JDK 是非常安全的。但是如果您使用的版本很重要,您应该对设置系统路径和 JAVA_HOME 以确保使用正确的版本感到满意。

于 2021-03-05T22:36:23.310 回答