c++ - 使用具有缓存大小限制的 FILE_FLAG_RANDOM_ACCESS 访问文件

标签 c++ windows

我想使用 FILE_FLAG_RANDOM_ACCESS 访问一个文件。但是当通过 FILE_FLAG_RANDOM_ACCESS 访问大文件时,巨大的内存消耗可能会导致系统性能下降。有没有办法限制特定文件句柄的缓存大小?

最佳答案

Windows 不提供设置最大缓存大小的方法,但您自己实现起来相对容易。使用 FILE_FLAG_NO_BUFFERING 打开文件并使用 LRU 列表实现您自己的缓存以确定何时驱逐 block 。请注意,从 Windows Server 2016 开始,FILE_FLAG_RANDOM_ACCESS 在缓存中保留数据的积极性降低,因此这不再是一个问题。但是,Microsoft 仍然建议避免使用此标志。

进一步阅读:Troubleshoot Cache and Memory Manager Performance Issues

关于c++ - 使用具有缓存大小限制的 FILE_FLAG_RANDOM_ACCESS 访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24298878/

相关文章:

c++ - 用什么工具查看多重继承的内存布局

python - Tkinter 窗口事件和属性

windows - 将 Composer 安装的输出重定向到文本文件

c++ - Windows C++ 中的输入编码问题

c++ - 使用rapidJson压缩json文件后如何将输出存储在c++字符串中

函数参数的 C++ 类模板推导 (P0091R0)

c++ - C++发送邮件的代码

c++ - 传递对指针的引用

linux - 在 Windows 和 Linux 中远程重启同一网络上另一台计算机的命令?

python - 如何在 Windows 上安装 OpenAI Universe 而不会出现错误代码 1?