Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How to get on MAC OS X using sysctl used and free memory ? Searched for sysctl -a | grep vm or sysctl -a | grep mem but didn't found anything relevant.

share|improve this question
Also see Is there a Mac OS X Terminal version of the “free” command in Linux systems? on the Apple Stack Exchange. – jww Jan 22 at 21:46
up vote 6 down vote accepted

You don't.

Well, except for total memory size, which you could have found with sysctl -a | grep mem (hw.memsize = 4294967296 on my machine).

vm_stat displays the same information as Activity does, you just need to multiply the value you want by page size. Both are provided in the output.

share|improve this answer
vm_stat: pages free: 12054 .. 12054 * 4096 / 1024 / 1024 = 47.08 and Activity monitor shows: 103 MB VM_stats output: Why i get wrong values ? – kesrut Oct 7 '10 at 19:46
Add Pages speculative to the free ones. You might have noticed that free+active+inactive+wired down don't add to the total size displayed in Activity Monitor. – Daniel Beck Oct 7 '10 at 19:50
the grep doesn't seem required - on my MacBook Pro, sysctl hw.memsize also works and prints hw.memsize: 8589934592 – ssc Sep 10 '12 at 11:36
top -l 1 | grep PhysMem: | awk '{print $10}'

top -l 1 runs top in logging mode (e.g. file output, not display/terminal output) for one iteration, then quits. The grep/awk filters for the free memory value in top output.

share|improve this answer

Why not use the top command to view your memory usage in realtime?


You can use the following commands:

sysctl -a | grep hw.usermem
sysctl -a | grep hw.physmem

For a complete listing type man sysctl in terminal.

share|improve this answer
Probably for use in a script. – Daniel Beck Oct 7 '10 at 17:55
Both usermem and physmem display useless values for systems over 2GB RAM. Both are probably bounded by a signed 32 bit integer. – Daniel Beck Oct 7 '10 at 18:12
Maybe i can use top to get single output. After i get the output i will parse needed values. – kesrut Oct 7 '10 at 19:18
Useless use of grep... sysctl hw.memsize=total, sysctl hw.physmem, sysctl hw.usermem – TrinitronX Dec 3 '13 at 23:00
@DanielBeck is right, hw.memsize is what you probably want for total. See my comment here for more info – TrinitronX Dec 3 '13 at 23:06

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.