当前位置: 技术问答>linux和unix
linux 写文件会不断消耗内存 删除时又恢复
来源: 互联网 发布时间:2016-04-11
本文导语: 内核2.6.9-22 2.6.9-34均试过。 用初级IO、标准IO以及QFile都有这种现象。 随着文件的写入,KDE内存守护显示可用内存在不断减少,但当前进程占用的内存并没有增加; 可用内存会一直降到几十K,此时仍能继续不停的写...
内核2.6.9-22 2.6.9-34均试过。
用初级IO、标准IO以及QFile都有这种现象。
随着文件的写入,KDE内存守护显示可用内存在不断减少,但当前进程占用的内存并没有增加;
可用内存会一直降到几十K,此时仍能继续不停的写文件,系统会变慢,socket的传输效率会明显降低。
手动或其他方式删除所写的文件,可用内存会恢复到初始状态。
一直没搞明白这是怎么回事,有什么解决方案?
各位大侠不吝赐教
用初级IO、标准IO以及QFile都有这种现象。
随着文件的写入,KDE内存守护显示可用内存在不断减少,但当前进程占用的内存并没有增加;
可用内存会一直降到几十K,此时仍能继续不停的写文件,系统会变慢,socket的传输效率会明显降低。
手动或其他方式删除所写的文件,可用内存会恢复到初始状态。
一直没搞明白这是怎么回事,有什么解决方案?
各位大侠不吝赐教
|
|
你应该在写完后fflush一下
|
明白为什么出现这种现象了
os为了提高写文件的效率,竟然牺牲其他所有的性能,
有点愕然
关键是文件已经写到磁盘里面了,怎么占用的内存还是没有释放掉
===============
fwrite以后,未必把内容转移到磁盘上了,除非你fflush或者fsync
因为有缓冲,,,,
os为了提高写文件的效率,竟然牺牲其他所有的性能,
有点愕然
关键是文件已经写到磁盘里面了,怎么占用的内存还是没有释放掉
===============
fwrite以后,未必把内容转移到磁盘上了,除非你fflush或者fsync
因为有缓冲,,,,