当前位置: 技术问答>linux和unix
mmap机制的问题
来源: 互联网 发布时间:2017-02-07
本文导语: 我写了一个程序,不断地通过mmap机制建立文件,每建立完一个文件后,调用munmap和close分别解除映射和关掉文件描述符。可最终依然会导致ENOMEM错误,我怀疑是不是没有调用msync的缘故。 所以请问,仅仅调用munmap而不...
我写了一个程序,不断地通过mmap机制建立文件,每建立完一个文件后,调用munmap和close分别解除映射和关掉文件描述符。可最终依然会导致ENOMEM错误,我怀疑是不是没有调用msync的缘故。
所以请问,仅仅调用munmap而不调用msync进行硬盘写的话,映射会一直驻留在内存吗?
所以请问,仅仅调用munmap而不调用msync进行硬盘写的话,映射会一直驻留在内存吗?
|
每次映射的是同一个文件吗?
|
进程空间一共4G, 一部分分给内核, 就那一部分里边用来mmap, 所以内存有限, ENOMEM就是告诉你mmap的文件太多了, 内存都映射没了.
|
印象里munmap后会产生一个 空洞.
然后就像2楼所说吧.
然后就像2楼所说吧.
|
怎么消除地址空间中的空洞?