关于大片内存分配
我现在要一次性读入一个2G左右的文件,要求内存连续。
问题1:
用内存映射文件是否会占用物理内存?是一点都不占还是只占一点还是始终全占。
问题2:
因为我的虚拟地址资源可能不够(已经被各种模块占用,碎片很多,不能申请一片连续的内存),内存映射文件是否可以解决这个问题?
请问有没有适合这种需求的方法
谢谢。
[解决办法]
问题1:文件映射后读写数据会占内存,如果你一次映射2G,然后去读写这2个G,内存会不断飙升。
问题2:可以,32位下进程地址空间为4G,可供用户操作的大约2G,即便如此我们还是可以通过文件映射操作大文件,比如十几G的文件,方法就是一次映射一小段,个人觉得一次映射分配粒度大小比较合适(64kb),映射完一段操作后再解除映射,进行下一次映射,同时这样处理内存也不会再飙升。