2

我在 Perfmon 计数器“内存”-“工作集”描述中看到了这条评论:

如果计算机中的可用内存高于阈值,则页面将留在进程的工作集中,即使它们没有被使用。当可用内存低于阈值时,将从工作集中修剪页面。

我无法找到有关此阈值的任何文档。它是可用 RAM 的百分比?是在 Commit Charge 消耗所有可用 RAM 的时候吗?系统如何处理内核页面和用户模式页面?

所以我的问题是:

  • 那个门槛是多少?
  • 有没有办法检测它?
  • 不同版本的窗口是否有不同的行为或阈值?

场景是我的进程将尝试使用与可用物理 RAM 一样多的内存。一旦达到该限制,我就可以在磁盘上取消分配和缓存某些内存块,以便为新内容腾出空间。它这样做是为了帮助缓解内存条件较低时的页面文件抖动。我想在内存管理器开始将页面交换到磁盘之前执行释放,因为内存使用量已经超过了魔法阈值。

我目前使用 MEMORYSTATUSEX::ullAvailPhys 值(由 GlobalMemoryStatusEx 填充)来识别可用物理内存的数量。

4

1 回答 1

2

Windows 为程序和磁盘缓存使用尽可能多的 RAM,因此它在某些时候不会大量交换......

如果您想要更多 RAM 来运行应用程序,则必须减少磁盘缓存。

SysInternal 有一个设置磁盘​​缓存的工具。

cacheset.exe

你可以在这里找到它:

http://technet.microsoft.com/en-us/sysinternals/bb897561.aspx

于 2014-09-22T14:30:45.680 回答