当前位置: 首页 > 面试题库 >

JRE 32位和64位

谢同化
2023-03-14
问题内容

我已经使用Java一段时间了,而我典型的设置新开发机的习惯要求从Oracle站点下载并安装最新的JDK。

今天这引发了一个不寻常的问题, does it matter if I use the 32bit or 64bit JRE bundle?

回想起来,我已经安装了之前的两个版本,并且很高兴将普通的工具链插入(Eclipse)。在我的日常编程中,我不会回想起曾经因为使用64位JRE(或为此目的而针对64位JRE)而不得不以其他方式进行更改或思考的事情。

根据我对64位和32位的理解-
确实可以归结为如何将数字存储在幕后…我确实知道这int是32位和long64位…与float32位和double64位相同-
难道Java甚至将这种微妙之处都抽象化了,也许一直以来都是“ 64位兼容的”?

我确定除了无法在32位系统上安装64位JRE之外,这里还缺少其他东西。


问题答案:

实际上,64位与32位可以归结为对象 引用 的大小,而不是数字的大小。

在32位模式下,引用为四个字节,从而使JVM可以唯一地寻址2 ^
32字节的内存。这就是32位JVM的最大堆大小限制为4GB的原因(实际上,由于其他JVM和OS开销,该限制较小,并且因操作系统而异)。

在64位模式下,引用是(惊奇的)八个字节,从而允许JVM唯一地寻址2 ^
64字节的内存,这对任何人来说都足够了。-Xmx64位模式下的JVM堆大小(用指定)可能很大。

但是64位模式会带来成本:引用的大小是原来的两倍,从而增加了内存消耗。这就是Oracle引入“ Compressed
oops”的原因。启用压缩的oops(我相信现在是默认设置)后,对象引用将缩小为四个字节,但要注意的是,堆被限制为40亿个对象(和32GB
Xmx)。压缩的操作不是免费的:要实现这种大幅度的内存消耗减少,需要消耗少量的计算成本。

作为个人喜好,我总是在家中运行64位JVM。CPU具有x64功能,操作系统也具有x64功能,因此我也希望JVM也以64位模式运行。



 类似资料:
  • 问题内容: 是否有任何变通办法可以使Flex编译器与64位JRE一起使用?如果我在Eclipse的Ant构建文件中使用MXMLC任务,则工作正常,但如果我尝试从命令行使用MXMLC(或在Eclipse中从FDT尝试运行…命令),它将失败,告诉我… “错误加载:C:\ Program Files \ Java \ jrrt-1.6.0 \ jre \ bin \ jrockit \ jvm.dll”

  • 问题内容: 我正在创建一个非常简单的应用程序,该应用程序可以读取和显示文本文件并进行搜索。 我问自己是否有兴趣向用户提出32位和64位版本。 区别仅在于使用64位版本访问更多的内存堆大小,还是还有其他兴趣? 32位编译程序是否可以在64位JVM上运行(我认为是) 问题答案: 任何 程序的32位和64位版本之间的唯一区别是机器字的大小,可寻址内存的数量以及所使用的操作系统ABI。对于Java,语言规

  • 问题内容: 我想知道x86和x64中的64位长吗? 问题答案: 是。Java 在任何JVM上都是64位,无一例外。所有Java原语类型都是完全可移植的,并且在所有实现中都具有固定的大小。

  • 标题说明了一切。我确实看到过类似的问题,有人建议关于http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame,但是所有的pygame可下载文件都是.whl格式的,我不知道如何在Windows7上运行。我尝试了“CD[directory]>pip安装[filename]”,但没有成功。

  • 如果操作系统是64位,我想安装一个32位的DLL到文件夹和64位的DLL到文件夹并分别注册它们。如果是32位操作系统,我只想将文件复制到正常程序文件夹并注册。 如何在Inno安装程序中执行此操作?64位DLL也会被64位程序注册吗? 这是我到目前为止的代码。它在 32 位操作系统上工作正常,但在 64 位操作系统上,它会转储 中的两组文件。 我已经看过示例,但它告诉如何进行32位或64位安装,而不

  • 本文向大家介绍谈谈,64位和32位的区别?相关面试题,主要包含被问及谈谈,64位和32位的区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点: 操作系统 操作系统只是硬件和应用软件中间的一个平台。32位操作系统针对的32位的CPU设计。64位操作系统针对的64位的CPU设计。