我在 Perfmon 计数器“内存”-“工作集”描述中看到此评论:
If free memory in the computer is above a threshold, pages are left in the Working Set of a process even if they are not in use. When free memory falls below a threshold, pages are trimmed from Working Sets.
我尚未找到有关此阈值的任何文档。它是可用 RAM 的百分比?是在 Commit Charge 耗尽所有可用 RAM 时吗?系统如何处理内核页面和用户模式页面?
所以我的问题是:
- 这个阈值是多少?
- 有办法检测到吗?
- 不同版本的 Windows 是否有不同的行为或阈值?
情况是我的进程将尝试使用与可用物理 RAM 一样多的内存。一旦达到该限制,我可以在磁盘上取消分配并缓存某些内存块,为新内容腾出空间。这样做是为了在内存不足时帮助缓解页面文件抖动。我想在内存管理器开始将页面交换到磁盘之前执行释放,因为内存使用量已超过神奇阈值。
我当前使用 MEMORYSTATUSEX::ullAvailPhys 值(由 GlobalMemoryStatusEx 填充)来标识可用物理内存量。
最佳答案
Windows 为程序和磁盘缓存使用尽可能多的 RAM,因此它在某些时候不会进行大量交换...
如果您需要更多 RAM 来运行应用程序,则必须减少磁盘缓存。
SysInternal 有一个设置磁盘缓存的工具。
cacheset.exe
您可以在这里找到它:
http://technet.microsoft.com/en-us/sysinternals/bb897561.aspx
关于windows - Windows 内存管理器用于确定何时开始将页面交换到磁盘的阈值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220136/