如何确定运行我的应用程序的JVM是32位还是64位?具体来说,我可以在程序中使用哪些函数或属性来检测到这一点?
你使用以下方法检索标记此JVM的位数的系统属性:
System.getProperty("sun.arch.data.model");
可能的结果是:
32
64
unknown
如HotSpot常见问题解答所述:
编写Java代码时,如何区分32位和64位操作?
没有公共的API可以区分32位和64位操作。认为64位只是一次编写,可在任何地方运行的传统平台。但是,如果你要编写特定于平台的代码(你感到羞耻),则系统属性sun.arch.data.model的值为“ 32”,“ 64”或“ unknown”。
例如,如果你的Java代码依赖于本机库,并且你需要确定是在启动时加载32位还是64位版本的库,则可能需要这样做。
对于某些版本的Java,您可以从命令行使用标志-d32和来检查JVM的位-d64。
-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版本中不再可用。