分3种情况测试文件读写情况下,page cache 等使用情况,也算是一个使用mmap的例子。文件大小为1GB。
- 直接读文件到内存中,内存中开辟文件大小的buffer进行读;
- mem_total_uesed = 2GB
- page_cache = 1GB
- 程序堆栈占用= 1GB
- 使用mmap进行文件映射:
- 仅仅映射,并不把其内容拷贝到内存缓冲区:mem_total_uesed = page_cache = 1GB,程序堆栈占用=0;
- 将其内容拷贝到内存缓冲区;mem_total_uesed = 2GB;page_cache = 1GB;程序堆栈占用= 1GB
- mmap开辟一块1GB匿名内存进行写入:
1 | /** |
#参考链接
A simple mmap() readonly example
mmap and read/write string to file
What is the purpose of MAP_ANONYMOUS flag in mmap system call?