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

13

几年前我试了64位的JDK,但它非常不稳定。

你认为现在稳定吗? 你会推荐使用吗? 我应该安装64位JDK + Eclipse还是坚持32位? 此外,除了越过4 GB内存限制外,64位相对于32位还有什么优势吗?


请查看此链接 - https://dev59.com/QnA65IYBdhLWcg3wuRF8 - Caffeinated
1
@Adel:那是在2010年。 - user2348638
1
内存限制不是每个进程4GB,而是标准的2GB,因为内存映射的方式,在Windows和Linux上都是如此。这两个操作系统都提供了增加限制的技巧,但它永远不会达到4GB(更像是3GB)。 - fvu
这个问题的答案可能已经过时了吗?有没有新的建议?现在越来越多的处理器、操作系统和软件都是64位的。我想稳定性不再是一个问题,甚至性能也发生了变化。但我们还没有完全过渡到32位到64位,所以这个问题肯定仍然相关,答案也不明显。我想补充一下这个问题,是否需要安装两个版本?(或者会引起其他问题吗?) - C Perkins
5个回答

11

只有当你想构建一个需要使用大量内存(即堆大小大于2GB)的应用程序时,才需要考虑这个问题。

让我引用Red Hat公司的话:

64位JVM的真正优势在于可以使用比2GB大得多的堆大小。带有64位JVM的大页内存提供了进一步的优化。下图显示了从4GB堆大小开始,每增加2GB一次,直到20GB堆的结果。

这是一个漂亮的图表:

32 bit vs 64 bit JVMs in performance

看,没有太大的区别。

在:Java虚拟机调优中可以查看更多内容(更多图表,耶!)


5
我认为答案很简单。
回答问题:“我需要超过4GB的RAM吗?”
64位JVM与32位JVM一样稳定,没有区别。实际上,在64位JVM中运行的Java应用程序将比32位JVM消耗更多的RAM。所有内部数据结构都需要更多的RAM。
我的eclipse正在64位JVM中运行。

4
你将部署到32位还是64位环境?如果你在生产环境中依赖特定环境,那么你的开发环境应该使用相同类型的环境。
如果你平台无关,选择x64,并且不要再想了。这个平台是成熟和稳定的,可以让你有巨大的扩展空间,只需要添加内存并使堆更大即可。
没有人想告诉CEO,“很抱歉,我们选择了x86,不能像希望的那样扩展。重新测试和重建x64平台需要一个月的项目。”

2
任何程序的32位和64位版本唯一的区别在于机器字大小、可寻址内存量以及正在使用的操作系统ABI。对于Java语言规范而言,除非您还使用本地代码,否则机器字大小和操作系统ABI的差异实际上并不重要(本地代码必须构建为与将加载它的JVM的字大小相同;不能在同一个进程中混合32位和64位版本的构建,而且在Java中也不应该这样做)。
64位版本使用64位指针。如果您有4GB以上的RAM,并运行保留4GB以上数据结构的Java程序,则64位版本将适应此需求。大而粗的指针可以指向4GB+内存空间中的任何字节。
但是,如果您的程序使用的内存较少,并且您运行64位JVM,则指针仍将占用64位(8字节)每个。这将导致数据结构变得更大,从而不必要地消耗内存。

0

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

顺便说一下,您的系统上可以安装多个JDK,这是完全安全的。但是,如果您使用的版本很重要,您应该熟悉设置系统路径和JAVA_HOME以确保使用正确的版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接