在Java中,如何在运行时确定主机的系统架构?使用我目前的设置,Windows 7 x64,Java JRE 32位,Intel Xeon w / Intel 64,系统属性似乎最明显地反映了Java VM的体系结构。
System.getProperty("os.arch");
System.getProperty("sun.arch.data.model");
结果:
86
32
答案 0 :(得分:1)
您可以通过调用ManagementFactory.getOperatingSystemMXBean()来访问OperatingSystemMXBean,它将为您提供:
String getName() 返回操作系统名称。此方法等效于System.getProperty(“os.name”)。
String getArch() 返回操作系统体系结构。此方法等效于System.getProperty(“os.arch”)。
String getVersion() 返回操作系统版本。此方法等效于System.getProperty(“os.version”)。
int getAvailableProcessors() 返回Java虚拟机可用的处理器数。此方法等效于Runtime.availableProcessors()方法。
double getSystemLoadAverage() 返回最后一分钟的系统平均负载。系统负载平均值是排队到可用处理器的可运行实体数量与在一段时间内平均可用处理器上运行的可运行实体数量之和。计算负载平均值的方式是特定于操作系统,但通常是阻尼的时间相关平均值。 如果负载平均值不可用,则返回负值。
See this page了解有关可用选项的更多详细信息。此外,大多数容器都有更多关于容器的可用选项。
答案 1 :(得分:0)
我还没有找到在Windows上执行此操作的方法,但Windows不是我们支持的平台之一。这可能适用于Linux / Solaris变体,但我没有测试过除典型部署平台之外的其他许多变种。
我不能轻易地重现这个部分伪代码的代码......
IMPORTANT: Fallback for ANY problem/exception, return "os.arch"
1) Check if System.getProperty("os.name") doesn't contain Windows
2) Exec "uname -p", capture the output
答案 2 :(得分:0)
系统属性“sun.cpu.isalist”可能会为您提供有关处理器体系结构的一些信息。然而,在Windows操作系统中,它只返回64位JRE中的有用值,返回“amd64”。不幸的是,在32位JRE中,这个属性返回:“pentium_pro + mmx pentium_pro pentium + mmx pentium i486 i386 i86”
我在Windows 7 x64,Intel I7中使用JRE 1.6(32位和64位)进行测试。