当未指定 -d32 或 -d64 等选项时,64 位 JVM 是否在 64 位模式下运行

2022-09-03 15:58:47

我在64位Centos机器上安装了64位Java。我的查询是,如果我不指定-d64选项,即使没有安装32位JVM,JVM也会以32位模式运行吗?

另外,我有点好奇我们是否可以将-d64选项与“javac”一起使用。如果是,那么它意味着什么,或者在哪里可以使用?我在阅读本文时遇到了这个问题

谢谢


答案 1

为 JRE 选择数据模型(位)是为了将应用程序的操作限制为仅在一种模式下运行。Java字节代码被设计为在两种数据模型中工作,因此对于100%纯java应用程序,将根据每种体系结构的行为和优点工作。

但是,如果您的应用程序使用仅在一种模式下工作的本机库,则应用程序将在不受支持的模式下失败。为此,您必须显式指示它应该在哪种模式下运行。

设置 -d32 或 -d64 时,如果应用程序无法在选定模式下运行,JRE 将不会启动应用程序。


答案 2

从您链接到的 Oracle 文档中:

如何在 32 位和 64 位操作之间进行选择?默认值是什么?

选项 -d32 和 -d64 已添加到 Java 启动器中,以指定程序是在 32 位还是 64 位环境中运行。在 Solaris 上,它们分别对应于 ILP32 和 LP64 数据模型。由于 Solaris 在同一 Java 安装中同时包含 32 位和 64 位 J2SE 实现,因此您可以指定任一版本。如果未指定 -d32 和 -d64,则缺省值是在 32 位环境中运行。
其他 Java 命令(javac、javadoc 等)很少需要在 64 位环境中执行。但是,-d32/-d64 选项可以传递给这些命令,然后使用已建立的 -J 前缀选项(例如:-J-d64)传递到 Java 启动器。
所有其他平台(Windows 和 Linux)都包含单独的 32 位和 64 位安装包。如果两个软件包都安装在系统上,则可以通过将适当的“bin”目录添加到路径来选择其中一个。为了保持一致性,Linux 上的 Java 实现接受 -d64 选项。

(强调我的)

因此,根据您链接到的文档,默认是在32位JRE中运行,并且可以通过传递而不是简单地在64位JRE中运行javac。-J-d64-d64

但是,请注意,本文档还说它适用于Java 1.4,而没有提到Java的最新版本。


推荐