共享内存映射和占用内存关系

demo测试
映射文件1G
1 映射1次,1写,进行memset操作,共享内存占1G
2 映射2次,1写,1读,单线程
1) 1写,进行memset操作,读无操作,共享内存占1G
2) 1写,进行memset操作,读某个指定位置字符(len/2或len-1位置),共享内存占1G
3) 1写,进行memset操作,for循环从0-len读取字符,共享内存占2G
4) 1写,进行memset操作,for循环从0-len/2读取字符,共享内存占1.5G

2 映射3次,1写,2读,单线程
1) 1写,进行memset操作,读无操作,共享内存占1G
2) 1写,进行memset操作,读某个指定位置字符(len/2或len-1位置),共享内存占1G
3) 1写,进行memset操作,两个读映射: for循环从0-len读取字符,共享内存占3G
4) 1写,进行memset操作,两个读映射:for循环从0-len/2读取字符,共享内存占2G
5) 1写,进行memset操作,一个读映射:for循环从0-len/2读取字符,另一个读映射:for循环从0-len读取字符,共享内存占2.5G

3 映射3次,1写,2读,共享内存操作都在工作线程中操作,主线程无操作
1) 1写,进行memset操作,两个读映射: for循环从0-len读取字符,共享内存占3G

结论:共享内存和映射次数、映射后使用情况存在关系

原文地址:https://www.cnblogs.com/a9999/p/13637019.html