先看这个 MMAP 机制通俗易懂-CSDN博客
一句话
**mmap(memory map)是操作系统提供的“把文件或设备直接映射到进程虚拟地址空间”的机制,Java 里对应 `MappedByteBuffer`。**
---
### 1. 技术本质
- 系统调用:`mmap()`(POSIX)、`CreateFileMapping`(Windows)。
- 作用:把一段**文件内容**或**物理设备内存**变成一段**可以像内存一样访问的地址**。
- 读文件不再用 `read()`,写文件不再用 `write()`,而是像访问数组一样 `buffer[i]` 即可。
---
### 2. 工作流程(简化版)
```
磁盘文件 page-cache ←→ 进程虚拟地址空间
↑
缺页中断按需加载
```
- **第一次访问**某个页 → 缺页中断 → 内核把对应磁盘块读进页缓存 → 建立映射 → 后续就是纯内存访问。
- **写操作** → 修改页缓存 → 由内核异步刷盘(`msync`/`force()` 可强制同步)。
---