Mac 内存和 swap 占用过高怎么办?

查明 Mac 实际内存大小,用 vmmap 定位吃内存的进程,并清理缓存缓解 swap 压力。

macOS硬件sysctl 内核参数内存CPUvmmap 内存映射诊断中风险
先用 sysctl 查看总内存,再用 vmmap --summary <pid> 检查占用最大的进程,看看内存都花在哪里。

快速开始

当 macOS 的物理内存不足时,系统会把数据换出到 swap,导致整机卡顿、SSD 频繁读写。本指南带你从确认硬件上限,到定位问题进程,再到缓解内存压力。

症状

?活动监视器中内存压力显示为红色或黄色,swap 用量涨到数 GB,程序频繁转彩虹圈,即使只开了几个应用 Mac 也明显变慢。

先确认你的 Mac 到底有多少内存

在排查内存泄漏之前,先弄清硬件底细。通过读取内核 sysctl 信息,可以看到总内存大小和 CPU 详情,帮你判断是机器本身内存不够用,还是某个进程在疯狂吃内存。如果显示的内存对于你的工作负载来说偏小,大量 swap 属于正常现象;否则大概率是有进程失控了。

从内核 sysctl 树获取 CPU 型号、核心数、内存大小和启动参数等内核状态。

命令
$ sysctl -n machdep.cpu.brand_string && sysctl -n hw.ncpu && sysctl -n hw.memsize

用 vmmap 找出到底是哪个进程在吃内存

在活动监视器里找到占用内存最大的进程,记下它的 PID,然后用 vmmap 的汇总视图查看详情。它会按内存区域类型(malloc、映射文件等)拆解内存占用,让你判断到底是堆内存持续增长、内存泄漏,还是文件映射占了空间。堆内存随时间不断增长的进程就是泄漏源,先记下进程名再进行下一步。

用系统自带的 vmmap 工具,把 macOS 进程的内存按区域和类型拆开分析。

命令
$ vmmap --summary <pid>

用 purge 释放非活跃内存缓存

在大文件操作之后,macOS 可能占用数 GB 的文件缓存,造成内存压力升高。执行 purge 可以强制系统立即丢弃这些缓存,释放内存、缓解 swap 压力。注意这只是临时缓解,并不能修复泄漏的应用——彻底解决还是要退出或重启之前定位到的问题进程。完成后观察活动监视器:内存压力下降、swap 用量不再攀升,就说明生效了。

大文件操作后强制 macOS 释放缓存的文件缓冲。

命令
$ sudo purge
!purge 会丢弃文件缓存,之后涉及大量磁盘读写的操作可能会短暂变慢。这只是临时手段——真正泄漏的应用需要退出重启或更新,而不是靠清理缓存。

如何确认已解决

活动监视器的内存压力回到绿色,swap 用量不再增长,日常工作不再频繁卡顿。

来源

最后验证: 2026-09-21

相关指南