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



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

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

谢谢

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

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

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

从您链接到的 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 中运行,并且可以通过传递 -J-d64 64 位 JRE 而不是简单地-d64在 64 位 JRE 中运行 javac。

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

最新更新