JVM是32位还是64位?

蝙蝠侠

这里读书的时候

我可以看到以下部分:

32位还是64位?如果您具有32位操作系统,则必须使用32位版本的JVM。如果您使用的是64位操作系统,则可以选择使用32位或64位版本的Java。不要仅仅因为拥有64位操作系统就必须假定您还必须使用Java 64位版本。

如果堆的大小小于3 GB,则Java的32位版本将更快并且占用空间更小。这是因为JVM中的内存引用只有32位,并且处理这些内存引用比处理64位引用(即使您具有64位CPU)要便宜。32位引用也使用更少的内存。

第8章讨论了压缩的操作,这是JVM甚至可以在64位JVM中使用32位地址的一种方式。但是,即使进行了这种优化,由于使用的本机代码仍将具有64位地址,因此64位JVM将具有更大的占用空间。

32位JVM的缺点是总进程大小必须小于4GB(在某些Windows版本上为3GB,在某些旧版本的Linux上为3.5GB)。其中包括堆,permgen,JVM使用的本机代码和本机内存。在32位JVM上大量使用长或双变量的程序会变慢,因为它们不能使用CPU的64位寄存器,尽管这是非常特殊的情况。

在32位JVM中,适合32位地址空间的程序将比类似配置的64位JVM快5%至20%。例如,本章前面讨论的库存批处理程序在我的桌面上的32位JVM上运行时,速度提高了20%。

这两行说,对于较小的堆大小(小于3GB),32位将更快。如果是这样,我想知道其背后的原因,是什么使32位JVM更快?

Serge Ballesta

这更多地取决于总体性能。如果您拥有最新的64位处理器和大量未使用的内存,那么使用JVM 32而不是JVM 64唯一可能获得的收益是某些循环可以完全适合32位地址而不是64位地址的缓存,从而导致主内存更少使用32位JVM访问。我真的无法评估增益,但是除了非常特殊的情况外,我怀疑它会达到5%到20%-注意,我只是怀疑,不确定...

但是,如果您使用的是资源有限的系统,则最终由于要优化硬件并在其上运行许多虚拟机,使用32位JVM将比使用64位JVM占用更少的内存。它将为其他应用程序和系统留下更多的可用内存,从而避免了交换并允许系统更好地缓存磁盘IO。

恕我直言,没有一般规则。我将使用以下经验法则:如果当JVM和所有其他应用程序正在运行时,系统仍具有足够的内存来缓存IO,则我将使用64位JVM,反之则使用32位JVM。

当然,只有Java应用程序本身不需要大量内存来强加使用64位JVM的情况才具有上述意义-最终会在必要时向系统添加更多内存,因为如今内存并不那么昂贵

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查固化剂JVM是64位还是32位

来自分类Dev

检查固化剂JVM是64位还是32位

来自分类Dev

安装64位Ubuntu还是32位?

来自分类Dev

我运行的是32位还是64位?

来自分类Dev

int是32位还是长64位,而不管系统是32位还是64位?

来自分类Dev

int是32位还是长64位,而不管系统是32位还是64位?

来自分类Dev

在Eclipse中运行32位JVM以及64位JVM

来自分类Dev

检测是32位还是64位窗口并定义var

来自分类Dev

如何知道libpython27.a是32位还是64位?

来自分类Dev

我有Numpy 32位还是64位?

来自分类Dev

Powershell:确定进程是32位还是64位

来自分类Dev

如何检查已安装的Anaconda是32位还是64位?

来自分类Dev

查找ipa文件是32位还是64位。(macos / unix)

来自分类Dev

如何检查我的软件是32位还是64位

来自分类Dev

如何确定我的cygwin安装是32位还是64位?

来自分类Dev

如何查找apk是32位还是64位

来自分类Dev

如何确定我的Firefox是32位还是64位?

来自分类Dev

如何测试共享对象是32位还是64位?

来自分类Dev

如何判断我的代码是32位还是64位编译

来自分类Dev

如何检查我的软件是32位还是64位

来自分类Dev

Office 2013 Professional Plus-64位还是32位?

来自分类Dev

我的Ubuntu是安装32位还是64位?

来自分类Dev

我的处理器是64位还是32位?

来自分类Dev

我应该安装32位还是64位?

来自分类Dev

如何确定我的Firefox是32位还是64位?

来自分类Dev

我的Linux ARM是32位还是64位?

来自分类Dev

Oracle Solaris 11 Express:是32位还是64位?

来自分类Dev

如何确定我的Windows是32位还是64位?

来自分类Dev

为NSIS安装程序选择32位还是64位?