文件IO耗尽Windows 7 64位系统上的系统内存

时间:2013-10-07 08:20:33

标签: windows

我正在编写像emule这样的软件,它可以在我的Windows XP 32bit上运行。但是,有些用户向我报告说,在Win7 64位下载大文件(大于2GB或更多)时,系统内存会耗尽,尤其是Avast!(防病毒软件)一起运行时。我使用进程监视器来观察avast的行为!,发现,avast继续阅读下载文件。 (由于软件预先分配文件空间,下载并写入修复大小的文件可能会像病毒一样)

这种情况与以下文章描述的类似,这意味着FileSystem Cache耗尽了物理内存。

http://blogs.msdn.com/b/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx http://blogs.msdn.com/b/ntdebugging/archive/2007/11/27/too-much-cache.aspx

我尝试了一些方法,一个是使用FILE_FLAG_NO_BUFFERING标志和CreateFile API进行读写,这样就避免使用系统文件缓存了,即使是Avast,系统文件缓存也会停止增长!仍在扫描下载文件。

通过我解决了问题,我仍然不明白为什么Avast!当我使用NO_BUFFERING模式读取和写入文件时,不会耗尽内存。

0 个答案:

没有答案