我正在尝试使用Java 7以编程方式检索Windows XP上可用的总物理内存。我正在使用OperatingSystemMXBean检索此值。

((com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean()).getTotalPhysicalMemorySize()


但是,这将返回2147483647(2GB),而任务管理器报告的总物理内存为3669488 KB。

据我了解,一个32位操作系统每个进程最多允许2GB RAM,所以我的猜测是这在某种程度上干扰了OSMXBean方法。是否有另一种获取总物理内存大小的方法,可以跨平台正确工作(即32位和64位)?

最佳答案

32位Windows不能为进程分配超过2GB的内存。即使当您拥有4 GB的完整RAM时,它在理论上也可以分配,然后您只有2 GB的RAM或OS使用率。

因此,您无法在32位Windows上为进程获取2GB以上的RAM。要获得更多,您必须使用64位。

有关更多信息:here

10-05 18:53