How to monitor RAM usage on a Mac
Reading the numbers is the easy part. Knowing which of them matters is what stops you chasing the wrong one.
macOS ships with everything you need to watch memory. The catch is that the most prominent number — how much RAM is free — is the one that tells you the least. Here is how to look, and what you are looking at.
1. Activity Monitor (built in, no setup)
Open Activity Monitor from Applications → Utilities, or press Command-Space and type its name. Click the Memory tab.
Two things make it far more useful than it looks by default:
- Sort by the Memory column (click the heading) so the largest consumer is always on top.
- Keep it in the Dock while you work. Right-click its Dock icon → Dock Icon → Show Memory Pressure. You get a live pressure graph without leaving the window open.
What each figure in the Memory tab means
Apple's own definitions, which are worth having straight:
| Figure | What it is |
|---|---|
| Memory Pressure | How efficiently memory is serving your needs. Determined by "the amount of free memory, swap rate, wired memory, and file cached memory." |
| Physical Memory | The RAM installed. Fixed, and on Apple silicon, unchangeable after purchase. |
| App Memory | Memory in use by applications. |
| Wired Memory | Required by the system. "Can't be cached and must stay in RAM, so it's not available to other apps." |
| Compressed | Memory squeezed down to make more RAM available. Happens automatically when the machine nears capacity. |
| Cached Files | Files "cached by the system into unused memory to improve performance." This is a benefit, not a leak. |
| Swap Used | Space on the startup disk used to move pages out of RAM and back. |
The one that matters
Memory Pressure, and only Memory Pressure. It is the only reading that already accounts for compression, cache and swap rate together.
- Green — fine. Ignore how little RAM is free.
- Yellow — macOS is compressing and swapping to keep up. Usually still fine; worth watching if it stays there.
- Red — genuinely short. Close something, or you need more RAM.
Here is why free RAM misleads. This reading came from a 64 GB Mac doing ordinary work, in green pressure the whole time:
| Free | 2.62 GB | 4.1% of RAM |
| File-backed cache | 9.79 GB | 15.3% |
| Compressed | 5.54 GB | 8.7% |
| Swap in use | 4,616 MB | of 6,144 MB |
Four percent free and swap in active use, on a machine with nothing wrong with it. Judge by pressure and this reads as healthy; judge by free RAM and it reads as a crisis.
2. vm_stat (Terminal, exact numbers)
When you want figures you can record rather than a graph you can glance at, vm_stat
reports the raw page counters:
vm_stat # page counters (multiply by the page size it prints)
sysctl vm.swapusage # swap total / used / free
sysctl hw.memsize # installed RAM, in bytes One derived number is worth the arithmetic. Divide Pages stored in compressor by Pages occupied by compressor and you get how hard macOS is compressing for you. On the machine above:
1,192,899 pages stored, held in 362,529 pages of RAM — a 3.29 : 1 ratio, saving 12.67 GiB. That is more than the entire RAM of a base-model Mac, reclaimed automatically, with nothing installed.
Per-app memory from the command line
top -o mem gives a live list sorted by memory. Note that its RSIZE column is not what
Activity Monitor shows: Activity Monitor reports phys_footprint, which accounts for
compressed and shared pages differently. If the two disagree, Activity Monitor's number is the one
to trust for "how much is this app costing me".
3. In the menu bar (always visible)
Activity Monitor works but you have to go and look at it, which means you find out about a problem after it has already cost you something. A menu-bar readout puts the pressure state permanently in view.
Options, honestly compared:
- Activity Monitor's Dock icon — free, built in, no install. Dock rather than menu bar, and system-level only.
- Stats — free and open source, and the most complete of the general-purpose monitors: CPU, GPU, disk, network and sensors as well as memory. If you want one menu-bar readout for everything, this is the default answer and we would not pretend otherwise.
- iStat Menus — the long-standing paid option, with the most polish.
- RAMKeeper — ours, and narrower on purpose: memory only, with per-app and per-renderer attribution and rules for what to do when an app crosses a threshold. If you want a full system dashboard, one of the above is a better fit.
The gap all of these share
Every tool here, including Activity Monitor, shows the same thing: a number right now. What you almost always want to know is which app's number is climbing — because an app sitting at 4 GB all day is fine, while an app that was at 400 MB this morning is the one about to cause trouble.
Watching for that by hand means keeping Activity Monitor open and remembering what the numbers were an hour ago. That, rather than the readout itself, is the part worth automating.
Where RAMKeeper fits
Disclosure: this is our site. RAMKeeper keeps current-versus-peak for each app, groups browser and Electron helpers under their parent so you see the real cost of "Chrome" rather than forty rows, and can alert you when pressure is heading for red instead of after it arrives.
There is a free version on the App Store — Apple's sandbox limits it to system-level pressure and swap, which is honest but is the same thing Activity Monitor already gives you. The per-app attribution needs the non-sandboxed build from the download page, which is also free.