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

新手上路,请多包涵

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

原文由 BobMcGee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 577
2 个回答

您检索标记此 JVM 位数的 系统属性

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

可能的结果是:

  • "32" – 32 位 JVM
  • "64" – 64 位 JVM
  • "unknown" – 未知 JVM

HotSpot FAQ 中所述:

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

没有公共 API 可以让您区分 32 位和 64 位操作。将 64 位视为一次编写,随处运行传统中的另一个平台。但是,如果您想编写特定于平台的代码(真丢人),系统属性 sun.arch.data.model 的值为“32”、“64”或“unknown”。

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

原文由 codaddict 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 $ 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 中不再可用。

原文由 gpampara 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题