在Windows上获取C的总交换大小?

时间:2015-01-15 19:29:52

标签: c windows swap ram

我知道如何通过使用GlobalMemoryStatus()和GlobalMemoryStatusEx()来获取总RAM,但是如何通过使用C编程在Windows上获得总交换大小?

2 个答案:

答案 0 :(得分:3)

有关获取页面文件使用和限制的信息,请参阅MEMORYSTATUSEX structure的文档。

  

<强> ullTotalPageFile

     

系统或当前进程的当前已提交内存限制,以较小者为单位,以字节为单位。要获得系统范围的已提交内存限制,请致电GetPerformanceInfo

     

<强> ullAvailPageFile

     

当前进程可以提交的最大内存量,以字节为单位。此值等于或小于系统范围的可用提交值。要计算系统范围的可用提交值,请调用GetPerformanceInfo并从CommitLimit的值中减去CommitTotal的值。

GetPerformanceInfo填充PERFORMANCE_INFORMATION结构,文档列出了它包含的所有字段。

MSDN还有一个名为Memory Performance Information的概述。

答案 1 :(得分:1)

嗯,据我所知,互换将等于:
ull*PageFile - ull*Phys(#1),其中*代表TotalAvail

这基本上有效,但请记住,在Windows中您可以关闭掉掉 - 在这种情况下ull*PageFile应该与ull*Phys相同,但是确实存在微小的差异,这可能导致来自(#1)替代的负面结果。 这些差异来自ull*PageFile min(user PageFile, system-wide PageFile),而ull*Phys始终是系统范围的。