15

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

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

谢谢

4

2 回答 2

3

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

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

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

于 2012-06-26T05:48:21.377 回答
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 中运行,并且可以通过传递-J-d64而不是简单地在 64 位 JRE 中运行 javac -d64

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

于 2012-05-22T07:04:35.387 回答