在Windows上禁用或刷新页面缓存

时间:2014-03-26 15:39:04

标签: windows caching disk

我认为Windows与Linux的页面缓存有类似的概念,用于存储来自磁盘的内存数据,如文件,可执行文件和动态库。我想知道是否有可能禁用这样的缓存或至少清除/清除它。

1 个答案:

答案 0 :(得分:14)

这在windows下称为待机列表。您可以全局清除它,也可以清除一个卷或一个文件句柄。

<强>全球
您可以使用Microsoft Technet中的readily available program选择EmptyEmpty Standby List

来执行此操作

以编程方式,您可以使用未记录的NtSetSystemInformation函数实现相同的功能,有关详细信息,请参阅程序中的line 239,该程序与前面提到的相同,除其他外。

对于一个文件句柄
使用FILE_FLAG_NO_BUFFERING打开文件:文档正在说明打开文件而不进行缓冲,但所有Windows版本从Windows 98到Windows 8的真实,可观察行为就是它只是丢弃该文件的完整缓存内容(适用于所有人!),并且不会从使用此句柄的读取中重新填充缓存。

完整卷
卷句柄只是一个文件句柄(有点特别,但仍然如此),因此假设您有适当的权限来打开卷句柄,您可以对完整的卷执行相同的操作。

另外,正如Mehrdad的回答here所指出的,似乎有一个功能/错误(功能错误?),它允许您在没有适当的权限的情况下使卷的缓存无效,仅仅通过注意打开它共享写入,至少在一个最新版本的Windows下 当任何对写入有效的打开成功,因为你可以改变文件系统内部数据这样做(这是一个功能)时,这是完全合理的,但显然它也可以在打开卷失败时(这是一个错误)

相关问题