首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用或刷新Windows上的页缓存

问禁用或刷新Windows上的页缓存
EN

Stack Overflow用户
提问于 2014-03-26 15:39:03
回答 1查看 4.8K关注 0票数 13

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 13:23:12

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

全局

通过选择现成程序 Empty→Empty Standby List,您可以使用Microsoft Technet的Empty→Empty Standby List来完成这一任务。

在编程上,您可以使用无文档的NtSetSystemInformation函数实现相同的功能,有关详细信息,请参阅程序中的第239行,该程序与前面提到的相同,以及其他内容。

用于一个文件句柄

用FILE_FLAG_NO_BUFFERING打开文件:文档说你打开文件时不需要缓冲,但从Windows 98到Windows 8的所有版本上真正的、可观察的行为是,它只是丢弃了该文件的全部缓存内容(对每个人来说!)并且不会从使用此句柄的读取中重新填充缓存。

为一个完整的卷

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

此外,正如在答案这里中指出的,似乎存在一个特性/bug(feature?)它允许您在没有适当权限的情况下使卷的缓存失效,只需在没有共享写入的情况下就打开卷缓存,至少在最近的Windows版本下是如此。

当任何对写入有效的打开都成功时,这是完全合理的,因为您可能会更改文件系统--内部数据(就其特性而言),但显然,当打开卷失败时(这是一个错误),它也能工作。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22666042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档