云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站建设_天安云谷华为什么部门_是什么

小七 141 0

32位JVM和64位JVM之间有一些明显的区别和细微的差别。我们认为我们将通过这篇问答文章来澄清这些问题。

如果您没有构建性能关键型应用程序,那么您不必理解它们之间的区别。32位JVM和64位JVM之间的细微差别不会对应用程序产生太大影响。你可以跳过进一步的阅读吗?。

我们大多数人认为64位大于32位,因此64位JVM性能将优于32位JVM性能。不幸的是,事实并非如此。64位JVM的性能可能比32位JVM稍有下降。以下是有关64位JVM性能的Oracle JDK文档摘录:

"一般来说,与在32位虚拟机上运行同一应用程序相比,64位虚拟机能够处理大量内存带来的好处是性能损失较小。

将在64位平台上运行的应用程序与在SPARC上运行的32位平台上的应用程序进行比较,当移到64位虚拟机时,性能差异约为10-20%在AMD64和EM64T平台上,大数据网站,根据访问应用程序的指针数量,这种差异在0-15%之间。"

在32位JVM中,最大可寻址内存空间只有2^32(即~4gb)。这意味着java进程的最大内存大小不能超过4GB。由于各种附加限制(如可用交换、内核地址空间使用、内存碎片和虚拟机开销),在实践中,限制要低得多。下表总结了您可以在32位JVM上设置的最大堆大小(即-Xmx):

而如果您在64位JVM上运行应用程序,则最大可寻址内存空间为2^64(即16 EB)。这意味着您的应用程序的最大可寻址内存大小接近无穷大。

这是因为系统中的每个本机指针占用8字节而不是4字节。加载这些额外数据对内存使用有影响,这会导致执行速度稍慢,具体取决于在执行过程中加载的指针数量Java程序的执行。好消息是,在64位模式下运行AMD64和EM64T平台时,Java VM会获得一些额外的寄存器,可以用来生成更高效的本机指令序列。这些额外的寄存器会提高性能,在比较时通常不会有任何性能损失32位到64位的执行速度

a.GC暂停时间

从32位JVM迁移到64位JVM的主要原因是获得较大的堆大小(即-Xmx)。当您增加堆大小时,企业信息化应用,GC暂停时间将自动开始变高,因为现在内存中有更多的垃圾需要清理。在进行迁移之前,您需要进行适当的GC调优,否则您的应用程序可能会经历几秒钟到几分钟的暂停时间。您可以使用GCeasy等工具为新增加的堆大小提供正确的GC设置。

b.本机库

如果您的应用程序使用Java本机接口(JNI)访问本机库,那么您也需要升级本机库。因为32位JVM只能使用32位本机库。同样,64位JVM只能使用64位本机库。

是的,悠哉返利机器人,CompressedOOps与32位、64位JVM相关。

我们用数据字段定义对象。在内存中创建此对象时,还将创建一个对象头以及数据字段。JVM需要对象头来执行内务管理、虚拟方法调用、垃圾收集、锁定…此对象头在32位JVM中占用8字节,在64位JVM中占用16字节。8字节的增加听起来可能不算多,但考虑到应用程序在运行时创建了数百万个对象,8字节乘以数百万个对象可能会增加相当大的开销。

您可以通过传递-XX:+UseCompressedOops JVM参数来缓解此问题。当您传递这个参数时,JVM会做一个聪明的把戏,并优化对象头的大小,使其即使在64位JVM中也只使用12个字节。只要您的JVM堆大小(即-Xmx)小于32GB,这个聪明的技巧就会奏效。如果超过32 GB,人工智能书,则对象头大小将再次变为16字节。

注意:-XX:+UseCompressedOops自JavaSE6U23及更高版本以来已成为默认值。只有在jdk6u23或更早版本上运行时,才传递-XX:+UseCompressedOops参数。

2GB内存:如果您的应用程序需要2GB以上的内存,那么也无需多想。使用64位JVM。但是,要做适当的性能测试来测量和减轻影响。

选择很少。让我展示几个选项:

选项1:从命令提示符发出命令:

如果是64位JVM,您将看到包含单词"64位"的输出。示例:

如果是32位JVM,您将*看不到"64位"这个词。示例:

选项2:您从java程序发出以下语句:

根据JVM类型,控制台上将打印相应的版本。

有32位操作系统和64位操作系统。如果您运行的是32位操作系统(现在很少见),企业信息管理软件,那么只能运行32位JVM。另一方面,如果您在64位操作系统上运行,您可以在32位JVM或64位JVM上运行应用程序。

当您转到Oracle JDK下载页面时,您将看到针对您的操作系统下载JDK的选项:

如果您选择x86,您将下载32位JVM。如果您选择x64,您将下载64位JVM。如果他们能把它命名为"Windows32位JVM"、"Windows64位JVM",事情就会简单得多。