启动 Java 时使用 -d32 和 -d64

2022-09-04 02:26:02

我在下面阅读了JDK常见问题解答的摘录

如何在 32 位和 64 位操作之间进行选择?默认值是什么?选项 -d32 和 -d64 已添加到 Java 启动器中,以指定程序是在 32 位还是 64 位环境中运行。在 Solaris 上,它们分别对应于 ILP32 和 LP64 数据模型。由于 Solaris 在同一 Java 安装中同时包含 32 位和 64 位 J2SE 实现,因此您可以指定任一版本。如果未指定 -d32 和 -d64,则缺省值是在 32 位环境中运行。

现在为了测试这一点,我登录到我的64位Ubuntu来宾操作系统并安装了64位JDK版本 - 。Linux x64 165.24 MB jdk-8u45-linux-x64.tar.gz

安装JDK后,当我使用运行Java程序时,一切都符合预期,因为它实际上是64位安装,但是当我使用时,我收到错误说。-d64-d32Error - This Java instance does not support 32 bit JVM

错误对我来说是可以理解的,但让我感到困惑的是这一行(如上面引用的段落所示)“选项-d32和-d64已添加到Java启动器中,以指定程序是在32位还是64位环境中运行。
根据这行,我的理解是,当启动64位版本的Java时,可用于以32位模式启动它。-d32

问题:

  1. 我的理解是否正确?如果它是正确的,那么我得到了错误?
  2. 如果我的理解不正确,那么为什么我需要这些命令行参数,因为当我使用Java启动时,将启动我的PATH中的任何安装(32位或64位JDK)。java

答案 1

您所做的引用:

选项 -d32 和 -d64 已添加到 Java 启动器中,以指定程序是在 32 位还是 64 位环境中运行。

仅对 Solaris 操作系统有效。

稍后在JDK的常见问题解答中,我们可以阅读:

所有其他平台(Windows 和 Linux)都包含单独的 32 位和 64 位安装包。如果两个软件包都安装在系统上,则可以通过将适当的“bin”目录添加到路径来选择其中一个。为了保持一致性,Linux 上的 Java 实现接受 -d64 选项。

因此,为了回答您的第二个问题,在Windows和Linux中,这些标志是无用的,32/64位选择是通过运行相应的JVM安装来完成的。


答案 2