【发布时间】:2014-06-15 07:18:04
【问题描述】:
我有一个小型测试程序,可以在数千个文件夹中创建数百万个文件(用于测试目的)。它是带有fopen 和fclose 调用的C 代码。
此代码在 Linux 上运行良好(RHEL、SUSE),但在 Windows 上,内存使用量随着要创建的文件数量的增加(接近一百万个文件)而增加。系统内存使用量增加 接近 8 GB(系统容量),并且程序变得非常慢(我假设是由于换入和换出页面)。
此时程序的内存需求保持不变,大约为几 MB(这是预期的)。我观察到内存中的缓存使用率随着程序的进展而迅速增加,并在程序的整个生命周期中不断增长。如何告诉 Windows 不要缓存这些文件或文件夹,甚至有可能吗?
【问题讨论】:
-
能分享一下你的小测试程序吗?
-
程序运行时,Windows 上的进程内存是否也会增加?
-
@steve 不,进程内存保持不变。我将尝试使用 Win 32 API。
-
代码粘贴在“pastebin.com/nUfSVe82”
-
缓存您访问的数据是“正常的、预期的”行为,这是无害的。用于缓存的内存通常比未使用的内存要好,而且缓存通常不会以任何方式影响性能。如果系统需要更多内存,它只会丢弃最旧的缓存条目。操作系统将永远为了满足缓存而开始交换,这完全是愚蠢的——不会发生。