使用FILE_FLAG_RANDOM_ACCESS访问文件,并限制缓存大小

时间:2014-06-19 04:36:17

标签: c++ windows

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

2 个答案:

答案 0 :(得分:2)

Windows没有提供一种设置最大缓存大小的方法,但这是相对容易实现的。用FILE_FLAG_NO_BUFFERING打开文件,并用LRU列表实现自己的缓存,以确定何时驱逐块。请注意,从Windows Server 2016开始,FILE_FLAG_RANDOM_ACCESS不太积极地将数据保留在缓存中,因此不必担心。但是,Microsoft仍然建议避免使用此标志。

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

答案 1 :(得分:0)

是的,有一种方法可以控制Windows中的文件缓冲,但您需要放弃C ++标准库并使用低级操作系统文件I / O API。如果您仍然感兴趣,请从这里开始阅读:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365199(v=vs.85).aspx