首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

内存映射文件的内存消耗有关问题

2012-01-22 
内存映射文件的内存消耗问题如题,电脑内存是2G的,我对一个512M的图像文件采用整个文件映射的方式显示,在浏

内存映射文件的内存消耗问题
如题,电脑内存是2G的,我对一个512M的图像文件采用整个文件映射的方式显示,在浏览的过程中,发现内存消耗越来越大,最后内存消耗基本就等于512M了。这样的意思是不是,如果我对整个文件进行了内存映射,那么,在读取文件的过程中,系统会将整个文件慢慢的都映射进内存,而且不做释放,直到我人为关闭映射。这样对于内存比较小的配置是不是就会直接down掉,至少从资源管理器上看,消耗5、6百兆内存还是挺吓人的。对于这样的问题大家有没有什么好的建议

[解决办法]
将文件部分映射
[解决办法]
MapViewOfFile,当你需要处理哪一部分的时候才映射,用完了UnmapViewOfFile。

如果只是自己处理数据的话,用个类把窗口机制封装起来就是了,外部调用通过重载运算符可以做得和普通地址空间一样。不过要作为参数调用Windows API就不行了,这个不好搞啊。
[解决办法]
这个是系统调度的
你没有办法处理
你可以这样试一下
看看在你的程序占了500多的内存后再开一个程序
然后看看你的程序会不会把内存让出来
[解决办法]

探讨
引用:
CreateFileMapping你是怎么调用的?

m_hFileMap = CreateFileMapping(m_hFile,NULL,PAGE_READWRITE,0,0,NULL);
把整个文件都映射进来了。我试了下,如果我不访问文件,是基本不耗内存,但是如果我遍历整个文件,那么遍历结束后,整个文件就都已经在内存里了。是不是除非Unmap,……

热点排行