我有一个小型测试程序,可以在数千个文件夹中创建数百万个文件(用于测试目的)。它是带有 fopen
和 fclose
调用的 C 代码。
此代码在 Linux(RHEL、SUSE)上运行良好,但在 Windows 上,内存使用量随着要创建的文件数量的增加(接近一百万个文件)而增加。系统内存占用增加 接近 8 GB(系统容量)并且程序变得非常慢(我假设是由于页面换入和换出)。
尽管此时程序的内存要求保持在几 MB 左右(这是预期的)。我观察到内存中的缓存使用量随着程序的进行而迅速增加,并在程序的整个生命周期中不断增长。我如何告诉 Windows 不要缓存这些文件或文件夹,甚至可能吗?
最佳答案
只是一个猜测,但您可能只是用不需要再次使用的文件来破坏/填充文件缓存。这会降低系统速度,因为它必须从磁盘读取文件。磁盘在执行此操作时也会被使用。
您可以尝试使用 Win32 API和带有文件标志 FILE_FLAG_NO_BUFFERING 的 CreateFile,这样它就不会缓存文件。
关于c++ - 用 C 编写的文件创建程序的 Windows 缓存使用量增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060180/