Java中的总RAM

4

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

不确定这是否有所帮助,但它包含了一些信息:https://dev59.com/UHVD5IYBdhLWcg3wTJvF - bezmax
这里有一个完全相同的问题,附带一些答案:https://dev59.com/Y2855IYBdhLWcg3wcz_y - Stas
1个回答

2

我想不到一个纯Java的方法,但是你可以使用Runtime.exec()运行以下命令:

wmic MEMPHYSICAL Get MaxCapacity

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

wmic OS Get TotalVisibleMemorySize

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接