如何在64位Windows 7上检索RAM

时间:2011-12-09 16:54:19

标签: java windows 64-bit wmi ram

我在64位Windows Vista上安装了一个Java桌面应用程序,内存为24GB。我的程序只找到24GB中的4个。我正在使用

获取RAM
wmic computersystem get TotalPhysicalMemory /format:list

如果失败(如果他们没有WMI)我使用

com.sun.management.OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean();
long ram = (long) bean.getTotalPhysicalMemorySize();

因为我无法访问PC,所以我无法运行测试来确认使用了哪种方法,但我几乎可以肯定该机器确实有WMI。

我怀疑我运行的是32位WMI,可能有4GB的限制。如何运行64位WMI?

3 个答案:

答案 0 :(得分:2)

我猜你是在使用32位JRE而不是64位。我们能看到java -version的输出吗?

答案 1 :(得分:2)

Windows WOW64 layer的一部分是尽可能完美地模拟32位环境。否则它是一个糟糕的模拟器。

32位应用程序的WMI将只返回32位应用程序以前可以预期的内容。例如,假设程序试图使用32位整数存储系统内存的字节数。好吧,如果WMI说实话并返回24 GB,那么程序会崩溃尝试将该数字填入32位整数(如果未检查操作则给出错误的结果)。

建议的解决方案是使用64位JRE并让程序以64位运行。

答案 2 :(得分:1)

如果您知道自己在64位系统上的32位JRE中,则可以按如下方式运行64位WMIC:

%SystemRoot%\sysnative\cmd.exe /c wmic computersystem get TotalPhysicalMemory /format:list

请注意,此命令无法在64位JRE或32位系统上运行,因此您需要确定首先使用的环境。