Java:VM 如何在 32 位处理器上处理 64 位 `long`

标签 java 64-bit jvm 32-bit

JVM 如何在 32 位处理器上处理原始的“long”,即 64 位?


能否在多核 32 位机器上并行使用多核?
32 位机器上的 64 位操作要慢多少?

最佳答案

它可能使用多个核心来运行不同的线程,但它不会并行使用它们进行 64 位计算。 64 位长基本上存储为两个 32 位整数。为了添加它们,需要进行两次添加,以跟踪进位位。乘法有点像将两个两位数相乘,只是每个数字都以 2^32 为底,而不是以 10 为底。其他算术运算也是如此。

关于速度的编辑:我只能猜测速度差异。加法需要两次加法而不是一次,乘法(我认为)需要四次乘法而不是一次。但是,我怀疑如果所有内容都可以保存在寄存器中,那么实际计算时间将与两次读取内存和两次写入内存所需的时间相比相形见绌,所以我的猜测是大多数时间的两倍操作。我想这将取决于处理器、特定的 JVM 实现、月相等。除非您正在进行大量的数字运算,否则我不会担心。大多数程序大部分时间都在等待磁盘或网络的 IO。

关于Java:VM 如何在 32 位处理器上处理 64 位 `long`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/237309/

相关文章:

linux - 缓冲区在 64 位上溢出

windows - 如何让 32 位 Perl 读取 64 位 Windows 注册表?

java - 以独立于平台的方式将环境变量传递给 JVM

java - 我应该使用前提条件检查来检查中间结果吗?

java - @Autowired vs @Required on setter

java - 有效地存储许多组件的 boolean 事件的简短历史记录

windows - 在 Windows 64 位上将 libusb 与 Delphi 一起使用?

java - 如何在 sbt 中运行多 jvm 测试?

java - JVM 如何确保 System.identityHashCode() 永远不会改变?

java - Spring-websockets : Spring security authorization not working inside websockets