首先,虽然找到VC,但是却没找到合适的板块,于是这个问题就被发到这里了。感觉可能算是基础的吧问题如题是关于文加内存映射的问题我找了很多资料,但是一直都没有我想要的答案。
因此,我来这里问大家了。问题1:文件起初比较小,可能只有8kb起始大小。因此,我可以一下子把8kb都映射进去。这没什么太大的问题。但是,随着数据量的加大,可能会加大到上百个GB,在文件增大的过程中要怎么做?
比如100GB的文件,难道也可以全部映射进去?问题2:就是映射文件的访问视图问题。
我希望,任何时候都以最快的速度访问这个100GB的大文件,我要怎么做?
如果每次读写都创建一个视图区域的话,在其用完之后就释放掉的话,效率是不是会很低?
还是可以创建一个100GB设置更大的视图?请教高人指点指点。(因为我需要支持密集型操作的可能一秒钟之内就有N个请求而且很可能数据量比较大,所以效率非常重要。也是因为效率的原因才选择文件内存映射这个技术)请各位大大帮帮小弟吧先谢谢啦。

解决方案 »

  1.   

    Window7 x86 2GB内存,230GB总硬盘大小。
    刚刚试了一下,映射一个4.5GB的文件,没有报错
    但是
    创建视图的时候出错了。我尝试创建一个4.5GB的视图的时候报错了但是把视图改小了就可以了
    但是现在还有一个问题。也就是说,不管三七二十一,第一个问题已经解决。
    那么第二个问题呢
    就是说,我要怎样做才能保证对整个一百个文件进行随机访问,而且性能保持最高效率
    那个视图到底要怎么做?
    是一次性创建200个500mb的视图呢?(这样做会不会有问题呢会不会报错之类的)还是,每次要用的时候创建一个适当大小的视图?然后用完了就释放掉?(这样做效率如何?)
      

  2.   

    你好,我想问下你内存映射方面的问题。就是我现在想随机访问大文件的数据,我为了方便,建了一个循环,用mapviewoffile来映射,再unmapviewoffile,但是我不关闭句柄。但是我发现我的内存一个增加,所以很快程序就跑不动了。
    求指点