当没有指定-d32或-d64之类的选项时,64位JVM是否会以64位模式运行

时间:2012-05-22 06:39:24

标签: java jvm

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

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

由于

2 个答案:

答案 0 :(得分:3)

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

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

当您设置-d32或-d64时,如果应用程序无法以所选模式运行,则JRE将无法启动

答案 1 :(得分: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。 1}}。

但请注意,本文档还说它适用于Java 1.4,并且说 nothing 关于更新版本的Java。