指南/哪个App在占用CPU或内存

如何查看Mac的CPU和内存占用,逐个App查看

Atta 🐬

Vitals创始人

发布于

简要回答

打开活动监视器,点按“CPU”并按“% CPU”排序,或点按“内存”并按“内存”排序。排在前面的就是此刻占用最多的。选取“显示”→“所有进程,分层显示”,可以看到帮助程序排在启动它们的App下面。判断内存要看“内存压力”图表,而不是“已使用内存”:绿色表示Mac的内存够用。Vitals是一款Mac系统监控工具,每个App只占一行并已计入帮助程序,还能显示过去几小时或30天内哪些App占用最多。

如何查看哪个App在占用CPU或内存

  1. 01 按下⌘空格键,输入“活动监视器”,然后按下Return键。
  2. 02 点按“CPU”,然后点按“% CPU”列标题,直到最高的数值排在最上面。
  3. 03 点按“内存”,然后用同样的方法点按“内存”列标题。
  4. 04 选取“显示”→“所有进程,分层显示”。帮助程序会移到启动它们的App下面,所以浏览器的标签页会排在浏览器下面。
  5. 05 查看“内存”标签页底部的“内存压力”图表。绿色表示Mac的内存够用,不管“已使用内存”看起来有多满。
  6. 06 要让仪表一直留在屏幕上,选取“窗口”→“CPU使用率”。要查看过去几分钟每个内核的情况,选取“窗口”→“CPU历史记录”。

要退出一个忙碌的App,选中它并点按工具栏中的停止按钮(带×的八边形),然后点按“退出”。只有App没有响应时才用“强制退出”。别碰kernel_task和WindowServer这类系统进程:它们忙,是因为别的东西在忙。

活动监视器擅长回答一个问题:这一秒是什么在忙。对于通常接踵而来的问题,它就没那么清楚了。这个进程属于哪个App?内存数值高是问题吗?一小时前风扇响起来时,是什么在占用CPU?下表说明哪个数值回答哪个问题,表后的各节则解释最让人困惑的那些数字。

哪个数值回答哪个问题

问题查看位置看什么
此刻哪个App在占用CPU? 活动监视器→“CPU” “% CPU”,从高到低排序。100%是一个内核满载
整台Mac有多忙? 活动监视器→“CPU”底部 “系统”、“用户”和“闲置”,三者相加为100%
哪个App占用内存最多? 活动监视器→“内存” “内存”,从高到低排序,并选取“显示”→“所有进程,分层显示”
Mac内存不足吗? 活动监视器→“内存”底部 “内存压力”:绿色没问题,黄色偏紧,红色不足
Mac在把磁盘当内存用吗? 活动监视器→“内存”底部 “已使用的交换”,以及它是否持续增长
一小时前是什么在忙? 活动监视器→“能耗” “12小时电源”,唯一带历史数据的列

“% CPU”为什么会超过100%

“% CPU”列是相对于一个内核的占比,每个内核都算作100%。一个App把四个内核用满,就会显示400%;在有十个内核的Mac上,这一列加起来最多可达1,000%。列表下方的“系统”、“用户”和“闲置”则是相对于整台Mac的占比,所以它们总是加起来为100%,而这一列不是。

在Apple silicon上,各个内核并不相同。能效核心以很小的功耗处理后台工作,所以一个在能效核心上占用100%的进程,实际占用的整机资源远比数字显示的少。选取“窗口”→“CPU历史记录”可以看到哪些内核在忙:能效核心排在前面。

为什么一个App会显示成几十个进程

浏览器和用网页技术构建的App会把工作拆分到多个帮助程序中:每个标签页或网站一个,图形一个,网络一个,每个扩展一个。Chrome会把它们显示为Google Chrome Helper和Google Chrome Helper (Renderer),Safari浏览器则用网站地址显示它的标签页。一个App可能占30或40行,单看每一行都不大。关于浏览器,请参阅Chrome占用内存过多。

“显示”→“所有进程,分层显示”会把每个帮助程序放在启动它的App下面,这样就知道它属于谁。活动监视器不会把它们加起来,而你自己把“内存”列相加会多算,因为进程之间共享的内存在每个进程里都算了一遍。把总和当作一个粗略的上限就好。

内存占用高什么时候是问题,什么时候不是

“已使用内存”接近“物理内存”的Mac是正常的。macOS会把最近用过的文件以已缓存文件的形式留在内存中,并且在动用磁盘之前先压缩内存。闲置的内存就是浪费的内存,所以条满了说明macOS正在充分利用你花钱买的内存。

判断Mac内存是否不足,要看内存压力。绿色表示一切都装得下。黄色表示macOS正在靠压缩和交换来应付,在Apple silicon上暂时这样没问题。红色表示它应付不过来了,App会变慢或停止响应。已使用的交换一整天不断增长,说明的也是同一件事。在“终端”中,memory_pressure的最后一行会给出整台Mac可用内存的占比。

  • 平常工作时内存压力就变黄或变红:说明这台Mac需要少开几个App,或者下次买内存更大的。Apple silicon Mac的内存无法事后加装。请参阅如何释放内存。
  • 退出导致问题的App后,内存压力仍然是红色:重启Mac。
  • 某个App的“内存”数值一直在涨,而你并没有更多地使用它:它很可能在内存泄漏。退出后重新打开,并更新它。

你会在前面看到的系统进程

有些最忙的行属于macOS本身。它们通常是在为别的东西干活,所以该问的是:是什么让它们忙起来的。

  • kernel_task:CPU占用高通常说明Mac太热了,macOS让处理器保持忙碌,好减少它发热的时间。请参阅Mac风扇为什么会变吵。
  • WindowServer:负责绘制屏幕上的一切。App不停重绘或连接了多台显示器时,它会很忙。
  • mds_stores和mdworker:“聚焦”索引,在macOS更新或大量拷贝后会很繁重。
  • photoanalysisd和mediaanalysisd:“照片”在分析你的图库。它们会自行完成。
  • launchd:启动其他所有进程。它很忙时,说明有某个登录项或后台任务在不断重启。

如何在“终端”中查看CPU和内存

“终端”无需打开窗口就能给出同样的数值,通过SSH或在脚本中使用都很方便。

  1. 运行top -o cpu可查看按CPU排序的实时列表,运行top -o mem则按内存排序。按q退出。
  2. 运行ps -Ao pid,pcpu,rss,comm -r | head -11可查看此刻CPU占用最多的十个进程。用-m代替-r即可按内存排序;rss列的单位是KB。
  3. 运行memory_pressure可查看“内存压力”图表背后的内存统计数据。最后一行给出可用内存的占比。

真正有用的做法

大多数变慢的问题只有一个原因,解决办法是把它找出来,而不是泛泛地释放内存。

  • 退出或更新排在列表最前的App。如果是浏览器,关闭忙碌的标签页,或停用背后的扩展。
  • macOS更新后,让“聚焦”和“照片”在接通电源的情况下用几个小时完成工作。
  • 别用内存清理App,也别用purge命令。它们清空的文件缓存macOS会马上重建,在重建完成之前Mac反而更慢。如果Mac是因为别的原因变慢,请参阅Mac为什么这么卡。
  • 如果退出导致问题的App后内存压力仍然是红色,或者某个进程卡住、“强制退出”也结束不了,就重启。

Vitals能多做什么

Vitals列出的是App而不是进程,并记住每个App用了多少。

  • 每个App一行,所有帮助程序都已计入:约60个App,而不是约1,000个进程
  • 点按一个浏览器,即可看到它的CPU和内存按标签页、扩展、图形和浏览器本身拆分
  • 每个App 30天的CPU和内存数据,可按过去1小时、12或24小时、7或30天排名
  • 后台App持续占用CPU、App内存不断增长,或Mac内存不足时,都会发送通知

须知

  • CPU可以像活动监视器那样按内核显示,也可以按整台Mac的占比显示,在“设置”→“通用”→“单位”中设置。
  • root和系统进程(例如kernel_task和WindowServer)需要打开可选的帮助程序才能测量。
  • Vitals不会对进程取样,也不会生成Spindump。活动监视器仍然可以。
购买Vitals $9 首发期$9,之后$29。14天内可退款。

常见问题

如何查看Mac的CPU占用?

打开活动监视器,点按“CPU”标签页,按“% CPU”排序。排在前面的就是占用最多的。底部的“系统”、“用户”和“闲置”数值显示整台Mac有多忙。要在“终端”中实时查看,运行top -o cpu。

如何查看每个App占用了多少内存?

打开活动监视器,点按“内存”,按“内存”列排序。选取“显示”→“所有进程,分层显示”,让App的帮助程序排在它下面。活动监视器不会把它们加起来;Vitals会。

Mac什么都没开,为什么内存占用还这么高?

macOS会把最近用过的文件以“已缓存文件”的形式留在内存中,还会为自己保留一部分作为“联动内存”。一旦有App需要,这些内存会立刻让出来。看看“内存压力”:如果是绿色,就没有任何问题。

Mac的CPU占用多少算正常?

空闲时,“CPU”标签页底部的“闲置”通常在90%以上,App和后台任务运行时会短暂冲高。某个App在你没用它时一直排在前面,就值得看一看。

内存压力变黄要紧吗?

本身并不要紧。它表示macOS正在靠压缩内存和使用交换来应付,而Apple silicon很擅长这一点。如果每天平常工作时都是黄色,或者变成了红色,说明以你运行的内容来说,内存不够用。

有没有更简单的方法按App查看Mac的CPU和内存?

Vitals每个App只占一行并已计入帮助程序,所以浏览器或Slack的CPU和内存各只有一个数值,并且会为每个App保留30天的这两项数据。

术语表中的相关条目

更多指南