我知道如何通过使用GlobalMemoryStatus()和GlobalMemoryStatusEx()来获取总RAM,但是如何通过使用C编程在Windows上获得总交换大小?
答案 0 :(得分:3)
有关获取页面文件使用和限制的信息,请参阅MEMORYSTATUSEX structure的文档。
<强> ullTotalPageFile 强>
系统或当前进程的当前已提交内存限制,以较小者为单位,以字节为单位。要获得系统范围的已提交内存限制,请致电GetPerformanceInfo。
<强> ullAvailPageFile 强>
当前进程可以提交的最大内存量,以字节为单位。此值等于或小于系统范围的可用提交值。要计算系统范围的可用提交值,请调用GetPerformanceInfo并从CommitLimit的值中减去CommitTotal的值。
GetPerformanceInfo填充PERFORMANCE_INFORMATION结构,文档列出了它包含的所有字段。
MSDN还有一个名为Memory Performance Information的概述。
答案 1 :(得分:1)
嗯,据我所知,互换将等于:
ull*PageFile - ull*Phys
(#1),其中*
代表Total
或Avail
。
这基本上有效,但请记住,在Windows中您可以关闭掉掉 - 在这种情况下ull*PageFile
应该与ull*Phys
相同,但是确实存在微小的差异,这可能导致来自(#1)替代的负面结果。
这些差异来自ull*PageFile
min(user PageFile, system-wide PageFile)
,而ull*Phys
始终是系统范围的。