macOS在M系列芯片上以统一内存(UMA)为核心重构内存管理,CPU/GPU/ANE共享LPDDR5X池与高速片上互连,取消显存区分;swap更克制,依赖ZRAM优先压缩,压力图比已用率更能反映真实性能。

macOS 在 M 系列芯片上对统一内存(UMA)和交换空间(swap)的管理,不是简单沿用 Intel 时代的逻辑,而是围绕“物理内存即显存即神经缓存”这一核心重构的。它既放大了硬件优势,也带来了新的使用认知门槛。
统一内存不是“更大内存”,而是“共享带宽通道”
传统笔记本中,CPU 用 DDR5 内存,GPU 用 GDDR6 显存,数据来回拷贝要走 PCIe 总线,延迟高、功耗大。M 系列芯片把 CPU、GPU、ANE 全部接入同一块 LPDDR5X 物理内存池,靠超高速片上互连(Fabric)直连——M1 是 68GB/s,M1 Max 达 400GB/s。这意味着:
- 图像渲染、视频编码、AI 推理等任务无需复制纹理或权重,GPU 和 NPU 可直接读取 CPU 加载的模型参数
- 系统不会显示“GPU 占用 XX GB 显存”,因为 macOS 不区分“内存”和“显存”,只报告整体已用内存
- 你看到 Activity Monitor 里“内存压力”偏黄甚至偏红,不等于卡顿;只要压力没持续爆红,系统仍在高效调度
交换空间(swap)的行为更克制,但触发条件变了
macOS 的 swap 不是 Windows 那样频繁写入硬盘的“备用内存池”。它只在物理内存真正不足、且压缩(memory compression)和页面置换(purge inactive pages)都失效时才启用。关键变化在于:
- ZRAM(内存内压缩)优先级极高:系统会把低活跃度页面实时压缩进内存,而不是立刻扔到 SSD 上
- swap 文件实际写入 APFS 卷的加密区域,路径为 /private/var/vm/swapfile*,默认隐藏且受 SIP 保护
- 8GB M1 MacBook Air 在多开 Chrome + VS Code + Docker 时容易触发 swap,但 16GB 起的机型极少落到 SSD 交换,因 ZRAM+UMA 已消化大部分压力
内存压力图谱比“已用/总量”更有参考价值
Activity Monitor 顶部的内存压力图(绿色→黄色→红色)才是真实水位尺。它的计算逻辑融合了三要素:
- 可用内存:当前未被任何进程锁定的空闲页
- 压缩内存:被 ZRAM 压缩后驻留内存的页面量(可快速解压复用)
- 文件缓存与可回收页:如磁盘缓存、App Suspend 状态内存等,系统可秒级释放
所以你会看到:即使“已用内存”显示 90%,只要压力条是绿色,系统依然流畅;反之,若压力持续红,哪怕只用了 70% 内存,也可能开始降频或延迟响应。
用户能做的关键优化其实很具体
不需要调虚拟内存大小,也不用禁用 swap——macOS 自动管理这部分。真正影响体验的是:
- 关闭非必要后台 App(尤其是 Electron 类应用,它们常驻大量未压缩内存)
- 浏览器用 Safari 替代 Chrome(Safari 对 UMA 和内存压缩优化更激进)
- 终端任务避免同时跑多个 llama.cpp 实例(每个实例会预分配大块内存,且 Metal 后端不自动释放 GPU 缓存)
- 选配时优先加内存而非 SSD:M1 Pro/Max 支持 32–64GB 统一内存,这对跑 Ollama、Desmond 或 Final Cut Pro 是质变










