我有一段代码可以计算出我的系统中的总RAM [不包括Java VM Heap Size]。
代码如下:
OperatingSystemMXBean operatingSystemMXBean =
ManagementFactory.getOperatingSystemMXBean();
Method m = operatingSystemMXBean.getClass().
getDeclaredMethod("getTotalPhysicalMemorySize");
m.setAccessible(true);
Object value = m.invoke(operatingSystemMXBean);
if (value != null)
{
System.out.println(value);
}
上述代码的问题在于,有时会给出不正确的值。例如,在一个拥有8GB RAM的系统中,使用32位JVM,它显示为4GB。我猜这是因为JVM是32位的,而使用32位只能寻址4GB是其最大限制。
有人可以提供解决方法/解决方案吗?基本上,我们如何使用32位JVM获取系统中的总RAM。
我的系统的完整详细信息如下: 操作系统:Windows 7 CPU:Intel i7 JDK:Sun Java 1.6 Update 21,32位 RAM:8 GB