Guides/Which app is using my CPU or memory
How to check CPU and memory usage on a Mac, app by app
Quick answer
Open Activity Monitor, click CPU and sort by % CPU, or click Memory and sort by Memory. The top rows are using the most right now. Choose View → All Processes, Hierarchically to see helper processes under the app that started them. Judge memory by the Memory Pressure graph, not Memory Used: green means the Mac has enough. Vitals, a system monitor for the Mac, shows one row per app with its helpers counted in, and which apps used the most over the last hours or 30 days.
How to see which app is using the CPU or memory
- 01 Press ⌘Space, type Activity Monitor and press Return.
- 02 Click CPU, then click the % CPU column header until the highest values are at the top.
- 03 Click Memory, then click the Memory column header the same way.
- 04 Choose View → All Processes, Hierarchically. Helper processes move under the app that started them, so a browser’s tabs sit under the browser.
- 05 Look at the Memory Pressure graph at the bottom of the Memory tab. Green means the Mac has enough memory, however full Memory Used looks.
- 06 For a meter that stays on screen, choose Window → CPU Usage. For each core over the last minutes, choose Window → CPU History.
To quit a busy app, select it and click the Stop button (the octagon with an ×) in the toolbar, then Quit. Use Force Quit only for an app that does not respond. Leave system processes such as kernel_task and WindowServer alone: they are busy because something else is.
Activity Monitor is good at one question: what is busy this second. It is less clear on the ones that usually follow. Which app does this process belong to? Is a high memory figure a problem? What was using the CPU an hour ago, when the fans came on? The table below says which figure answers which question, and the sections after it explain the numbers that confuse people most.
Which figure answers which question
| Question | Where to look | What to read |
|---|---|---|
| Which app is using the CPU right now? | Activity Monitor → CPU | % CPU, sorted high to low. 100% is one full core |
| How busy is the whole Mac? | Activity Monitor → CPU, bottom | System, User and Idle, which add up to 100% |
| Which app is using the most memory? | Activity Monitor → Memory | Memory, sorted high to low, with View → All Processes, Hierarchically |
| Is the Mac short of memory? | Activity Monitor → Memory, bottom | Memory Pressure: green is fine, yellow is tight, red is short |
| Is the Mac using the disk as memory? | Activity Monitor → Memory, bottom | Swap Used, and whether it keeps growing |
| What was busy an hour ago? | Activity Monitor → Energy | 12 hr Power, the only column with any history |
Why % CPU goes past 100%
The % CPU column is a share of one core, and every core counts to 100%. An app using four cores fully reads 400%, and on a Mac with ten cores the column can add up to 1,000%. The System, User and Idle figures under the list are shares of the whole Mac, which is why they always add up to 100% while the column does not.
On Apple silicon the cores are not equal. Efficiency cores take background work at a fraction of the power, so a process at 100% on one of them is using much less of the Mac than the number suggests. Choose Window → CPU History to see which cores are busy: the efficiency cores are grouped first.
Why one app shows up as dozens of processes
Browsers and apps built on web technology split their work into helper processes: one per tab or site, one for graphics, one for the network, one per extension. Chrome shows them as Google Chrome Helper and Google Chrome Helper (Renderer), and Safari shows its tabs by the site’s address. A single app can be 30 or 40 rows, and none of them looks large on its own. For browsers, see Chrome using too much memory.
View → All Processes, Hierarchically puts each helper under the app that started it, which tells you whose it is. Activity Monitor does not add them up, and adding the Memory column yourself overcounts, because memory shared between processes is counted in each of them. Treat the sum as a rough upper bound.
When high memory use is a problem, and when it is not
A Mac with Memory Used close to its Physical Memory is normal. macOS keeps recently used files in memory as Cached Files, and it compresses memory before it uses the disk. Unused memory is wasted memory, so a full bar means macOS is using what you paid for.
The figure that tells you whether the Mac is short is Memory Pressure. Green means everything fits. Yellow means macOS is compressing and swapping to keep up, which is fine for a while on Apple silicon. Red means it cannot keep up, and apps slow down or stop responding. Swap Used that keeps growing through the day points the same way. In Terminal, memory_pressure ends with the share of memory that is free across the whole Mac.
- Pressure turns yellow or red during your normal work: the Mac needs fewer apps open at once, or more memory next time. Memory in Apple silicon Macs cannot be added later. See how to free up RAM.
- Pressure turns red and stays there after you quit the app that caused it: restart the Mac.
- One app’s Memory figure keeps climbing while you are not using it more: it is likely leaking. Quit and reopen it, and update it.
The system processes you will see near the top
Some of the busiest rows belong to macOS itself. They are usually doing work for something else, so the useful question is what set them off.
- kernel_task: high CPU usually means the Mac is too hot, and macOS is keeping the processor busy so it has less time to heat up. See why a Mac’s fans get loud.
- WindowServer: draws everything on screen. Busy when an app redraws constantly or several displays are connected.
- mds_stores and mdworker: Spotlight indexing, heavy after a macOS update or a large copy.
- photoanalysisd and mediaanalysisd: Photos analyzing your library. They finish on their own.
- launchd: starts every other process. When it is busy, a login item or background task keeps restarting.
How to check CPU and memory in Terminal
Terminal gives the same figures without a window, which is handy over SSH or in a script.
- Run
top -o cpufor a live list sorted by CPU, ortop -o memsorted by memory. Press q to quit. - Run
ps -Ao pid,pcpu,rss,comm -r | head -11for the ten processes using the most CPU right now. Use-minstead of-rto sort by memory; the rss column is in kilobytes. - Run
memory_pressurefor the memory statistics behind the Memory Pressure graph. The last line gives the share of memory that is free.
What actually helps
Most slowdowns have one cause, and the fix is to find it rather than to free memory in general.
- Quit or update the app at the top of the list. For a browser, close the busy tab or turn off the extension behind it.
- After a macOS update, give Spotlight and Photos a few hours on power to finish their work.
- Skip memory cleaner apps and the
purgecommand. They empty the file cache that macOS rebuilds straight away, and the Mac is slower until it does. For a Mac that is slow for other reasons, see why is my Mac so slow. - Restart when memory pressure stays red after you quit the apps that caused it, or when a process is stuck and Force Quit does not end it.
What Vitals adds
Vitals lists apps instead of processes, and remembers what each one used.
- One row per app with every helper counted in: about 60 apps instead of about 1,000 processes
- Click a browser to see its CPU and memory split into tabs, extensions, graphics and the browser itself
- 30 days of CPU and memory for every app, ranked over the last hour, 12 or 24 hours, 7 or 30 days
- A notification when a background app keeps the CPU busy, an app keeps growing in memory, or the Mac runs short of memory
Good to know
- CPU can be shown per core, as Activity Monitor does, or as a share of the whole Mac, in Settings → General → Units.
- Root and system processes, such as kernel_task and WindowServer, are measured when the optional helper is on.
- Vitals does not sample a process or take a spindump. Activity Monitor still does.
Questions people ask
How do I check CPU usage on a Mac?
Open Activity Monitor, click the CPU tab and sort by % CPU. The top rows are using the most. The System, User and Idle figures at the bottom show how busy the whole Mac is. For a live view in Terminal, run top -o cpu.
How do I see how much RAM each app is using?
Open Activity Monitor, click Memory and sort by the Memory column. Choose View → All Processes, Hierarchically so an app’s helper processes sit under it. Activity Monitor does not total them; Vitals does.
Why is my Mac using so much memory with nothing open?
macOS keeps recently used files in memory as Cached Files and holds some for itself as Wired Memory. That memory is handed back the moment an app needs it. Check Memory Pressure: if it is green, nothing is wrong.
What is normal CPU usage for a Mac?
At rest, Idle at the bottom of the CPU tab is usually above 90%, with short spikes as apps and background tasks run. A single app that stays near the top while you are not using it is worth a look.
Is yellow memory pressure bad?
Not by itself. It means macOS is compressing memory and using swap to keep up, which Apple silicon handles well. If it is yellow during your normal work every day, or turns red, you are short of memory for what you run.
Is there an easier way to see CPU and memory per app on a Mac?
Vitals shows one row per app with its helper processes counted in, so a browser or Slack has one figure for CPU and one for memory, and it keeps 30 days of both for every app.
In the glossary
More guides
- Why is my Mac so slow
- What’s draining my Mac’s battery
- Why won’t my Mac sleep
- Chrome using too much memory
- Why are my Mac’s fans so loud
- How to control fan speed on a Mac
- How to free up RAM on a Mac
- Docker using too much memory
- How to stop Docker containers
- Volume mixer for Mac
- Activity Monitor alternatives
- iStat Menus alternatives
- Stats alternatives
- Task Manager for Mac
- Best system monitors for Mac
- Best menu bar monitors for Mac
- Best volume mixers for Mac