【发布时间】:2018-04-20 00:50:57
【问题描述】:
我知道如何使用 java 程序检查当前机器上运行的 JVM 是 32 位还是 64 位。 但是有没有可能知道当前机器上的操作系统是32位还是64位。
请告诉我如何确定使用 Java 程序。
【问题讨论】:
-
你可能想看看这个链接stackoverflow.com/questions/228477/…
标签: java
我知道如何使用 java 程序检查当前机器上运行的 JVM 是 32 位还是 64 位。 但是有没有可能知道当前机器上的操作系统是32位还是64位。
请告诉我如何确定使用 Java 程序。
【问题讨论】:
标签: java
你可以跑
System.getProperty("os.arch")
检索系统架构。我的 Windows 64 位系统将返回 amd64 作为 os.arch 值。
【讨论】:
"os.arch" Operating system architecture
System.getProperty("os.arch");
应该在所有平台上都可用,有关更多信息,请参阅 Java 系统属性教程。
但是如果是 32 位的 JVM,64 位的 Windows 平台会欺骗 JVM。实际上,64 位 Windows 会欺骗任何 32 位进程的环境,以帮助旧的 32 位程序在 64 位操作系统上正常工作。阅读有关 WOW64 的 MSDN 文章了解更多信息。
作为 WOW64 的结果,调用 System.getProperty("os.arch") 的 32 位 JVM 将返回“x86”。如果你想得到Windows上底层操作系统的真实架构,使用如下逻辑:
String arch = System.getenv("PROCESSOR_ARCHITECTURE");
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432");
String realArch = arch != null && arch.endsWith("64")
|| wow64Arch != null && wow64Arch.endsWith("64")
? "64" : "32";
ChrisH回答了这个问题。
【讨论】: