Java中的总RAM
我有一段代码可以计算系统中的总RAM[而不是Java VM堆大小] 详情如下:Java中的总RAM,java,jvm,Java,Jvm,我有一段代码可以计算系统中的总RAM[而不是Java VM堆大小] 详情如下: OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean(); Method m = operatingSystemMXBean.getClass(). getDeclaredMethod("getT
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
我的系统的详细信息如下:
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);
}
操作系统:Windows 7CPU:Intel i7
JDK:Sun Java 1.6更新21,32位
RAM:8GB
无法想到纯Java的方式,但您可以使用Runtime.exec()运行以下命令
wmic MEMPHYSICAL Get MaxCapacity
编辑:
修正-以上给出了安装闸板的最大容量。请尝试以下操作系统别名:
wmic OS Get TotalVisibleMemorySize
不确定这是否有帮助,但它有一些信息:下面是完全相同的问题和一些答案: