Mac 变慢几乎总是因为某个或某几个进程占用了过多资源——CPU、内存或磁盘 I/O。解决方法听起来很简单:找到问题进程,然后杀掉它。但真正的难点在于:怎么确定该杀哪个,以及杀掉它到底是不是正确的做法。本文从快捷键到高级诊断工具,逐一介绍 macOS 上的所有方法,帮你让 Mac 恢复流畅。
快速结论
- 最快终止冻结应用:按 Cmd + Option + Esc 打开”强制退出应用程序”窗口,选中应用并点击”强制退出”。
- 查看 CPU/内存占用最高的进程:打开活动监视器(应用程序 → 实用工具),按 CPU 或内存排序。
- 终端杀进程:运行
kill <PID>或kill -9 <PID>(针对无响应进程)。按名称杀:killall <名称>。 - 深度诊断 + 实时图表:使用 ProcXray 同时监控 CPU、内存和磁盘 I/O,查看完整进程树,捕获活动监视器遗漏的短命进程。
为什么你的 Mac 会变慢?
macOS 在任意时刻都运行着数百个进程——系统守护进程、后台代理和用户应用同时争夺三类关键资源:
- CPU —— 当某个进程独占 CPU 核心时,其他一切都会变慢。常见元凶包括失控的浏览器标签页、构建工具和 Spotlight 索引服务
mds_stores。 - 内存 (RAM) —— macOS 使用内存压缩和交换(swap)来应对内存压力,但一旦交换活动增加,磁盘 I/O 就会飙升,整个系统开始卡顿。根据 Apple 内存使用性能指南,当物理内存不足时 macOS 会先压缩内存页,只在万不得已时才写入磁盘——而这恰恰是你感受到明显变慢的时刻。
- 磁盘 I/O —— 大量读写数据的进程(Time Machine 备份、Xcode 索引、数据库引擎)可能占满存储带宽,即使 CPU 和内存看起来正常,应用也会出现彩虹转圈。
修复慢速 Mac 的关键是弄清瓶颈在哪类资源以及哪个进程是罪魁祸首。
方法一:键盘快捷键强制退出
macOS 上终止无响应应用最快的方法:
- 按 Cmd + Option + Esc(⌘ + ⌥ + Esc)。
- 在列表中选择无响应的应用。
- 点击强制退出。
局限性
- 只显示前台用户应用——看不到后台进程和守护进程。
- 没有任何资源使用信息——你只能猜哪个应用有问题。
- 无法终止系统进程或 root 拥有的进程。
这个方法适合你已经确定某个应用卡死、只需要快速关闭它的场景。
方法二:活动监视器
活动监视器是 Apple 内置的进程管理工具,显示所有运行中的进程及基本资源指标。
查找并终止进程
- 打开活动监视器(按 Cmd + Space,输入”活动监视器”,回车)。
- 点击 CPU 标签页,按 % CPU 降序排列,找到最耗资源的进程。
- 选中该进程,点击工具栏中的 X 按钮(停止)。
- 先选择”退出”。如果进程不停止,再点击”强制退出”。
检查内存压力
切换到内存标签页。底部的内存压力图表是关键信号:
- 绿色 —— 有充足的空闲内存。慢的原因可能是 CPU 或磁盘。
- 黄色 —— 内存有压力。macOS 正在压缩页面,性能可能下降。
- 红色 —— 严重内存压力。系统正在写入交换区。立即关闭大型应用。
检查磁盘活动
切换到磁盘标签页,查看哪些进程读写量最大。按写入的字节数排序,可以找到持续写入 SSD 的进程。
局限性
- 没有进程树视图——看不到父子关系,你可能杀掉了子进程,父进程却不断生成新的。
- 无法捕获短命进程——那些生成、消耗资源后在一秒内就退出的进程从来不会出现。
- 没有单个进程的实时趋势图——你看到的是快照,不是变化趋势。
- 无法查看环境变量或命令行参数。
方法三:终端命令
终端提供精确、可脚本化的进程控制能力。
查找资源占用高的进程
# 按 CPU 占用率排序实时显示(持续更新)
top -o cpu
# 一次性快照:所有进程按 CPU 降序
ps aux --sort=-%cpu | head -20
按 PID 终止进程
# 优雅终止(SIGTERM)—— 让进程有机会清理
kill 12345
# 强制终止(SIGKILL)—— 立即结束,无清理
kill -9 12345
按名称终止进程
# 终止所有匹配名称的进程
killall Safari
# 强制终止
killall -9 node
查找磁盘 I/O 过高的进程
# 实时监控每个进程的磁盘 I/O(需要 sudo)
sudo iotop
# 替代方案:使用 fs_usage 追踪文件系统调用
sudo fs_usage -f filesys | head -100
局限性
top和ps显示的是快照——无法追踪趋势。iotop需要sudo权限,输出难以解读。- 没有可视化进程树——需要借助
pstree手动追踪关系。 - 刷新间隔之间,短命进程很容易被遗漏。
- 杀错 PID 可能导致关键系统服务崩溃。
方法四:ProcXray —— 深度进程诊断
当慢速 Mac 的原因并非某个明显失控的应用时,你需要更深层的可见性。ProcXray 在一个界面中提供 CPU、内存和磁盘 I/O 的实时监控,以及远超活动监视器和终端的诊断工具。
实时性能图表
ProcXray 顶部工具栏同时显示 CPU 使用率、内存压力和网络 I/O 的实时指标,选中进程后下方详情面板的 History 选项卡显示该进程的 CPU 和内存历史趋势图表。与活动监视器的快照视图不同,这些图表展示连续趋势——让你轻松发现内存持续攀升的进程(可能的内存泄漏)或 CPU 周期性飙升的进程。
你可以固定可疑进程并持续观察其资源趋势,这对诊断那些”打开活动监视器就消失”的间歇性卡顿至关重要。
进程树视图
切换到树视图,查看完整的父子层级关系。这很重要,因为:
- 像
xcodebuild这样的构建工具可能生成数十个子进程(clang、ld、swift-frontend),它们共同占满 CPU。活动监视器将它们显示为毫无关联的独立条目。 - 失控的 Shell 脚本可能不断 fork 子进程。杀子进程毫无意义——你需要杀掉父进程。
- 浏览器(Chrome、Electron 应用)为每个标签页创建独立进程。树视图让你准确看到哪个标签页或扩展是罪魁祸首。
短命进程捕获
ProcXray 用绿色高亮标记新生成的进程,用红色标记刚退出的进程,即使进程已经终止也会保持可见。这能捕获那些编译器调用、Shell 辅助工具、定时任务等短命进程——它们可能消耗大量资源,却在活动监视器刷新之前就已经退出。
智能进程管理
右键点击任意进程即可执行操作:
- 终止 —— 优雅退出(SIGTERM),等同于
kill <PID>。 - 暂停 —— 冻结进程而不杀死它(SIGSTOP)。适合暂时暂停资源大户,完成你的工作后再恢复。
- 发送 HUP/QUIT 信号 —— 重新加载配置或触发调试用的核心转储。
- 在 Finder 中显示 —— 跳转到可执行文件位置,确认进程的真实身份。
- 复制命令行 —— 查看进程启动时的完整参数。
诊断磁盘 I/O 瓶颈
打开任意进程的连接标签页,查看所有打开的文件描述符——该进程正在读写的每个文件。如果一个进程打开了数百个文件,它很可能就是磁盘 I/O 瓶颈的来源。这等同于运行 lsof -p <PID>,但以结构化、可过滤的界面呈现。
环境变量检查
有时 Mac 变慢是因为配置错误——某个后台进程运行在调试模式、构建工具开启了详细日志、或者某个应用加载了巨大的插件目录。ProcXray 的环境标签页显示进程继承的每个环境变量,你可以一键导出为 JSON 做进一步分析。
系统化修复慢速 Mac 的流程
与其盲目杀进程,不如按以下诊断流程操作:
第一步:确定瓶颈类型
| 症状 | 可能的瓶颈 | 检查方法 |
|---|---|---|
| 风扇狂转,应用卡顿 | CPU | 按 CPU 使用率排序——找超过 100% 的进程 |
| 切换应用慢,出现彩虹转圈 | 内存 | 检查内存压力——黄色/红色说明有问题 |
| 保存文件慢,应用短暂冻结 | 磁盘 I/O | 检查各进程的磁盘读写速率 |
| 什么都慢 | 多重瓶颈 | 三项全查——通常是级联效应 |
第二步:找到元凶
- CPU 瓶颈:找 CPU 使用率超过 100% 的进程(多核 Mac 上,单个进程可达 200%、400% 等)。常见元凶:
mds_stores、kernel_task、WindowServer、浏览器渲染进程。 - 内存瓶颈:按内存占用排序。检查总内存使用是否超过物理 RAM。关注内存持续增长的应用(可能是内存泄漏)。
- 磁盘 I/O 瓶颈:找写入量最高的进程。检查打开的文件描述符数量。常见元凶:
backupd(Time Machine)、mds(Spotlight)、bird(iCloud 同步)。
第三步:杀、暂停还是深入调查?
| 场景 | 操作建议 |
|---|---|
| 冻结的应用,完全无响应 | 强制退出(Cmd + Option + Esc 或 kill -9) |
| 后台进程临时占用过多 CPU | 暂停它,完成你的工作后再恢复 |
| 不认识的进程 | 先检查——查看代码签名、可执行文件路径和父进程,再决定是否终止 |
系统进程(kernel_task、WindowServer) | 不要杀——调查根本原因(通常是散热或外设问题) |
| 父进程不断生成资源密集型子进程 | 杀父进程,而不是子进程 |
对比:Mac 进程终止方法
| 能力 | 强制退出 (⌘⌥⎋) | 活动监视器 | 终端 | ProcXray |
|---|---|---|---|---|
| 终止用户应用 | 支持 | 支持 | 支持 | 支持 |
| 终止后台进程 | 不支持 | 支持 | 支持 | 支持 |
| 显示 CPU/内存/磁盘 I/O | 不支持 | 分开的标签页 | top/iotop | 同时显示 |
| 进程树视图 | 不支持 | 不支持 | 有限 | 支持 |
| 捕获短命进程 | 不支持 | 不支持 | 不支持 | 支持 |
| 暂停并恢复进程 | 不支持 | 不支持 | kill -STOP | 右键菜单 |
| 检查环境变量 | 不支持 | 不支持 | macOS 无 /proc | 支持 |
| 代码签名验证 | 不支持 | 不支持 | codesign 命令 | 支持 |
| 正则搜索进程 | 不支持 | 文本过滤 | grep | 内置支持 |
常见问题
活动监视器显示 CPU 不高,为什么 Mac 还是很慢?
瓶颈可能不在 CPU。检查内存压力(黄色或红色表示系统正在写入交换区)和磁盘 I/O(某个进程可能在大量读写 SSD)。另外,短命进程会在活动监视器刷新周期内完成并退出,根本不会显示出来。ProcXray 能捕获这些瞬态进程,即使它们已经退出也会保持可见。
强制杀掉进程安全吗?
强制终止(kill -9 或”强制退出”)发送 SIGKILL 信号,进程会被立即结束,没有机会保存数据或清理资源。对于浏览器、编辑器等用户应用,你可能丢失未保存的内容。对于系统进程,强制终止可能导致系统不稳定。务必先尝试优雅退出(kill <PID> 发送 SIGTERM),只在进程完全无响应时才使用强制终止。
如何阻止 kernel_task 占用大量 CPU?
kernel_task 是 macOS 在机器过热时用来限制 CPU 的机制。你不能也不应该杀掉它。应该解决根本原因:断开可能导致散热问题的外设、确保通风口未被遮挡、重置 SMC(Intel Mac),或检查是否有传感器故障。Apple 的支持文章 HT207359 详细介绍了这一问题。
macOS 上退出、强制退出和 Kill 有什么区别?
- 退出(Cmd + Q)—— 发送礼貌请求。应用可以提示你保存文件再关闭。
- 强制退出(Cmd + Option + Esc)—— 发送 SIGTERM。应用应该终止,但仍可以拒绝。
- Kill(
kill -9)—— 发送 SIGKILL。操作系统立即终止进程。进程无法捕获、阻止或忽略此信号。
如何找到占用磁盘 I/O 最多的进程?
在活动监视器中,切换到磁盘标签页,按写入的字节数排序。在终端中,运行 sudo iotop 实时监控每个进程的磁盘 I/O。在 ProcXray 中,选中进程后下方详情面板的 Open Files 选项卡可以查看该进程打开的所有文件描述符,精确了解它在读写哪些文件。
能一次性杀掉一个进程及其所有子进程吗?
在终端中,可以用 kill -- -<PGID> 杀掉整个进程组,但获取 PGID 需要额外命令。ProcXray 的树视图直接展示完整层级——右键点击父进程终止它,macOS 会自动清理行为正常的孤儿子进程。
参考资料
- Apple — 内存使用性能指南
- Apple 支持 — 如果 kernel_task 占用了大量 Mac CPU
- Apple 支持 — 如何使用活动监视器
- macOS 进程监控完整指南
- ProcXray vs 活动监视器:完整对比
下载 ProcXray → — 免费 14 天试用,支持 macOS Sonoma+,Apple Silicon 与 Intel。