如何判断我是在 64 位 JVM 还是 32 位 JVM 中运行(从程序中)运行?
2022-08-31 04:13:02
如何判断运行应用程序的 JVM 是 32 位还是 64 位?具体来说,我可以使用哪些函数或属性在程序中检测这一点?
如何判断运行应用程序的 JVM 是 32 位还是 64 位?具体来说,我可以使用哪些函数或属性在程序中检测这一点?
对于某些版本的 Java,您可以从命令行使用标志和 .-d32
-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 上不再可用。
检索系统属性,该属性标记此 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”或“未知”。
例如,如果您的 Java 代码依赖于本机库,并且您需要确定是在启动时加载 32 位还是 64 位版本的库,则可能需要这样做。