CreateFile的FILE_FLAG_NO_BUFFERING 问题

来源:互联网 发布:人工智能 人类 奴隶 编辑:程序博客网 时间:2024/05/17 08:43
最近在写数据恢复的软件,同时要对24块硬盘的数据进行操作,然后写入一个16T 的存储中。
由于在平常的时候没有考虑到系统缓存的问题,只知道 我每次 重复跑数据的时候 往往第二次的比第一次的快上好多。
情况 就这么发生了。服务器的内存是16G,由于数据量太大了,执行完一个任务要好几天。不知不觉中发现系统内存爆满了,查找了所有存在的进程检查其占用的内存 没哟发现有异常的。当时 认为有可能是系统做的优化,毕竟大数据量的拷贝,系统会做出点什么吧!
昨天的时候Leader发截图给我,说WinHex跑数据的状况,内存没有变化,维持在一定的水平。就这么想挖想,什么不可能的,或者根本不存在的假设也有试了一遍。比如 容器中是不是 该存指针而不是对象;再循环中使用引用 系统是不是还要去计数啥的。最后采取 落实缓存的问题。随后发现在CreateFile的时候 有个标志是FILE_FLAG_NO_BUFFERING。一般情况下 都是设置为0,平时也不在意。
现在发现了,有点意思。它这个缓存 等程序结束的时候也不是放。由缓存引起的程序爆满,也不会造成系统的崩溃,系统是有优化的吧。至少目前没有出现过奔溃的状况
不知道是不是我火星了?还是一般情况下 大家都不注意
原创粉丝点击