一尘不染

Java如何判断我是在64位JVM还是32位JVM中运行(从程序中)?

java

如何确定运行我的应用程序的JVM是32位还是64位?具体来说,我可以在程序中使用哪些函数或属性来检测到这一点?


阅读 962

收藏
2020-03-02

共2个答案

一尘不染

你使用以下方法检索标记此JVM的位数的系统属性:

System.getProperty("sun.arch.data.model");

可能的结果是:

  • 32” – 32位JVM
  • 64” – 64位JVM
  • unknown” –未知的JVM

如HotSpot常见问题解答所述:

编写Java代码时,如何区分32位和64位操作?

没有公共的API可以区分32位和64位操作。认为64位只是一次编写,可在任何地方运行的传统平台。但是,如果你要编写特定于平台的代码(你感到羞耻),则系统属性sun.arch.data.model的值为“ 32”,“ 64”或“ unknown”。

例如,如果你的Java代码依赖于本机库,并且你需要确定是在启动时加载32位还是64位版本的库,则可能需要这样做。

2020-03-02
一尘不染

对于某些版本的Java,您可以从命令行使用标志-d32和来检查JVM的位-d64

$ java -help
...
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available

要检查64位JVM,请运行:

$ java -d64 -version

如果它不是64位JVM,则会得到以下信息:

Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.

同样,要检查32位JVM,请运行:

$ java -d32 -version

如果它不是32位JVM,则会得到以下信息:

Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.

这些标志是在Java 7中添加的,在Java 9中已弃用,在Java 10中已删除,并且在现代Java版本中不再可用。

2020-03-02