在32位Windows中从Java获取超过2GB计算机的总物理内存大小

在32位Windows中从Java获取超过2GB计算机的总物理内存大小,java,Java,我正在尝试使用Java7以编程方式检索WindowsXP上可用的全部物理内存。我正在使用来检索此值 ((com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean()).getTotalPhysicalMemorySize() 但是,这将返回2147483647(2GB),而任务管理器报告的总物理内存为3669488KB 据我所知,32位操作系

我正在尝试使用Java7以编程方式检索WindowsXP上可用的全部物理内存。我正在使用来检索此值

((com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean()).getTotalPhysicalMemorySize()
但是,这将返回2147483647(2GB),而任务管理器报告的总物理内存为3669488KB


据我所知,32位操作系统将允许每个进程最多2GB的RAM,因此我猜测这会干扰OSMXBean方法。是否有其他方法可以获得在不同平台(即32位和64位)上正常工作的总物理内存大小?

32位Windows无法为进程分配超过2GB的内存。即使你有完整的4GB内存,它也可以全部使用,那么你只有2GB的内存和OS使用

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


有关更多信息:

我了解每个进程分配的RAM的限制,但我想做的是知道本地计算机上安装了多少内存,而不是从Java进程实际使用它。