我应该使用32位还是64位JDK?

时间:2013-05-03 23:35:52

标签: java

多年前,我尝试过64位JDK,但它确实是错误的。

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

5 个答案:

答案 0 :(得分:11)

如果你想构建一个使用大量内存的应用程序(即大于2GB的堆),那就开始烦恼了。

请允许我引用红帽:

  

64位JVM的真正优势是可以使用远大于2GB的堆大小。具有64位JVM的大页面内存可进一步优化。下图显示了从4GB堆大小运行的结果,以2 GB为增量,最多可达20GB堆。

那是一张漂亮的图表:

32 bit vs 64 bit JVMs in performance

看,没什么大不同。

Java Virtual Machine Tuning

中查看更多(更多图表,yay!)

答案 1 :(得分:5)

我认为答案很简单。

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

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

我的eclipse在64位JVM中运行。

答案 2 :(得分:4)

您要部署到32位还是64位环境?如果您对生产环境感兴趣,那么您的开发环境应使用相同的环境类型。

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

没有人想告诉首席执行官,“抱歉,我们选择了x86并且不能像我们希望的那样扩展。这是一个为期一个月的项目项目,需要重新测试并重新替换x64的所有内容。”

答案 3 :(得分:2)

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

64位使用64位指针。如果你有4GB + RAM,并且运行的Java程序在内存中保留了4GB +的数据结构,那么64位内存就可以满足这一要求。大胖指针可以指向4GB +内存空间中的任何字节。

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

答案 4 :(得分:0)

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

仅供参考,在您的系统上安装多个 JDK 是完全安全的。但是,如果您使用的版本很重要,您应该可以轻松设置系统路径和 JAVA_HOME 以确保使用正确的版本。