c++ - 用 C 编写的文件创建程序的 Windows 缓存使用量增加

标签 c++ c windows

我有一个小型测试程序,可以在数千个文件夹中创建数百万个文件(用于测试目的)。它是带有 fopenfclose 调用的 C 代码。

此代码在 Linux(RHELSUSE)上运行良好,但在 Windows 上,内存使用量随着要创建的文件数量的增加(接近一百万个文件)而增加。系统内存占用增加 接近 8 GB(系统容量)并且程序变得非常慢(我假设是由于页面换入和换出)。

尽管此时程序的内存要求保持在几 MB 左右(这是预期的)。我观察到内存中的缓存使用量随着程序的进行而迅速增加,并在程序的整个生命周期中不断增长。我如何告诉 Windows 不要缓存这些文件或文件夹,甚至可能吗?

最佳答案

只是一个猜测,但您可能只是用不需要再次使用的文件来破坏/填充文件缓存。这会降低系统速度,因为它必须从磁盘读取文件。磁盘在执行此操作时也会被使用。

您可以尝试使用 Win32 API和带有文件标志 FILE_FLAG_NO_BUFFERING 的 CreateFile,这样它就不会缓存文件。

关于c++ - 用 C 编写的文件创建程序的 Windows 缓存使用量增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060180/

相关文章:

c++ - 可以在 Debian Bullseye 上使用 g++ (gcc) 11 吗?

c++ - 如何使用指针读取 nxn 矩阵?

c++ - 跨平台 C/C++ 开发资源

c++ - 如何从通过 Windows MiniDump 调用生成的核心转储中获取堆栈跟踪?

python - 在 trac 插件 (trac-git) 中查找要修改的文件

.net - Gacutil.exe 成功添加程序集,但程序集在资源管理器中不可见。为什么?

c++ - 从 10 以外的其他基数的输入流中读取

c# - 从托管 C++ DLL 使用 C# 程序集时崩溃

c++ - C++ 中的全局动态 Allcoated 变量

c - 如何抑制结构成员的 C99 样式初始化的 PC-Lint 错误?