我有一段代码可以解析系统中的总RAM [不是Java VM堆大小]。
如下:
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);
}
上面这段代码的问题在于它有时会给我不正确的值。例如,在具有8 GB RAM的系统中,使用32位JVM,它显示4 GB。我想这是因为JVM是32位,使用32位4 GB是它可以解决的最大值。
任何人都可以为此建议方法/解决方法。基本上我们如何使用32位JVM获取系统中的总RAM。
我的系统的全部细节如下:
操作系统:Windows 7
CPU:Intel i7
JDK:Sun Java 1.6 Update 21,32位
RAM:8 GB
答案 0 :(得分:2)
无法想到纯Java方式,但可以使用Runtime.exec()运行以下命令
wmic MEMPHYSICAL Get MaxCapacity
编辑: 更正 - 上面给出了安装RAM的最大容量。尝试以下操作系统别名:
wmic OS Get TotalVisibleMemorySize