2013-05-03 73 views
10

几年前,我尝试使用64位JDK,但它确实很麻烦。我应该使用32位还是64位JDK?

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

+0

看到这个 - http://stackoverflow.com/questions/3669778/why-should-i-use-the-64-bit-jdk-over-the-32-bit-version – Coffee 2013-05-03 23:37:09

+1

@Adel:那是在 – user2348638 2013-05-03 23:37:31

+1

内存限制不是每个进程4GB,而是标准的2GB,这是由于内存映射的方式,在Windows和Linux上。两种操作系统都提供技巧来增加这个限制,但它永远不会是4GB(更像3GB) – fvu 2013-05-03 23:43:54

回答

10

只有当你想建立,将使用大量的内存(即,超过2GB堆大)的应用程序开始与理会。

允许我引用红帽:

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

也就是说,在一个漂亮的图形:

32 bit vs 64 bit JVMs in performance

见,没有大的区别。

查看更多(更多图表,耶!)在:Java Virtual Machine Tuning

5

我觉得答案很简单。

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

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

我的eclipse运行在64位JVM上。

2

32位和64位之间的唯一的差异建立任何程序都是机器字大小,可寻址存储器的量,以及操作系统ABI在使用中。使用Java,语言规范意味着除非您使用本机代码,否则机器字大小和OS ABI的差异根本不重要。 (本机代码的构建必须与将要加载它的JVM的字大小相同;不能在同一过程中混合使用32位和64位构建,而且实际上不需要非常奇特的编码,用Java来做这件事。)

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

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

4

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

如果您是平台不可知论者,请使用x64,甚至不要考虑它。该平台成熟稳定。它给你提供了巨大的扩展空间,因为你可以增加内存并使你的堆更大。没有人愿意告诉CEO,“对不起,我们选择了x86,不能像我们希望的那样扩大规模,这是一个为期一个月的项目计划,重新测试和重新平台x64的所有项目。”

相关问题