为什么FreePhysicalMemory给出的值不正确?

时间:2011-06-10 15:39:42

标签: powershell

我正在尝试使用win32_OperatingSystem类中的FreePhysicalMemory属性。问题是,它通常只返回几MB的值。显然,考虑到只有Powershell在我的计算机上打开,我有更多的RAM可用。

我使用以下代码:

$test = gwmi win32_OperatingSystem
$test.FreePhysicalMemory

我做错了吗?或者我不明白FreePhysicalMemory属性实际返回的是什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

是否可以提供一些其他详细信息,例如您的操作系统,总物理内存以及PowerShell命令的实际输出?

使用win32_OperatingSystem类时要记住的一件事是,FreePhysicalMemory和FreeVirtualMemory的值以KB为单位返回 - 而不仅仅是字节,因此您可能需要额外除以1024.

例如,在我的4GB总物理内存的计算机上(WinXP 32位 - 所以操作系统只能使用~3.5GB),这是我的PowerShell的输出:

$test = gwmi win32_OperatingSystem
# verify the "visible" memory size to the Operating System
$test.TotalVisibleMemorySize
3652840

# check free memory
$test.FreePhysicalMemory
1872828

# divide by 1024 twice, once for KB -> MB, once for MB -> GB
($test.FreePhysicalMemory / 1024) / 1024
1.78606796264648

我运行了一些应用程序,但这表明我仍有大约1.786GB的可用物理内存。我在Win7 x64盒子上验证了这个行为是相同的。

以下是Win32_OperatingSystem WMI类的MSDN参考页面:http://msdn.microsoft.com/en-us/library/aa394239.aspx

答案 1 :(得分:0)

猜测,您使用的是Vista还是更新?如果是这种情况,那么预取程序正在使用空闲内存,预取程序会尝试在内存中自动寻找常用的应用程序。

这些系统通常不关心这个问题。他们试图利用可用于使常规应用程序运行良好的内存。