Java中的总RAM

时间:2011-07-14 08:48:16

标签: java jvm

我有一段代码可以解析系统中的总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

1 个答案:

答案 0 :(得分:2)

无法想到纯Java方式,但可以使用Runtime.exec()运行以下命令

wmic MEMPHYSICAL Get MaxCapacity

编辑: 更正 - 上面给出了安装RAM的最大容量。尝试以下操作系统别名:

wmic OS Get TotalVisibleMemorySize