macOS中Aliased(ALI)与Shared(SHM)内存的区别是什么?
macOS vmmap中SM=ALI与SM=SHM的差异解析
二者均为进程间共享内存区域,但核心差异体现在映射来源、持久化机制上:
SM=ALI (Aliased)
- 属于文件关联型共享内存,对应
vmmap中的mapped file类型。多个进程通过映射同一个磁盘文件(或文件的部分区域)实现内存共享,不同进程的虚拟地址可以不同,但物理内存页是共享的。 - 内存中的脏页(Dirty)会直接回写到关联的磁盘文件,数据具备持久化特性。
- 你的示例中,该区域是读写权限的映射文件,
DIRTY 16K说明修改过的内容仍驻留内存,且未交换到swap,属于活跃的文件共享映射场景。
SM=SHM (Shared)
- 属于匿名共享内存,不关联任何磁盘文件,是纯粹的内存级共享区域,通常通过
shm_open等系统API创建。 - 内存中的脏页不会回写到磁盘文件,当系统内存不足时,脏页可能被交换到swap分区,数据不具备持久化特性。
- 典型用于进程间临时数据交换、无需持久化的场景。
苹果官方文档仅给出基础描述:
Aliased (ALI) and shared (SHM) memory are shared between processes.
内容的提问来源于stack exchange,提问作者Samuel Hapak
相关产品推荐
相关产品推荐

