Meaning of the values
The first line means:
total: Your total (physical) RAM (excluding a small bit that the kernel permanently reserves for itself at startup); that's why it shows ca. 11.7 GiB , and not 12 GiB, which you probably have.
used: memory in use by the OS.
free: memory not in use.
cached: This shows memory usage for specific purposes, these values are included in the value for
The second line gives first line values adjusted. It gives the original value for
used minus the sum
buffers+cached and the original value for
free plus the sum
buffers+cached, hence its title. These new values are often more meaningful than those of first line.
The last line (
Swap:) gives information about swap space usage (i.e. memory contents that have been temporarily moved to disk).
To actually understand what the numbers mean, you need a bit of background about the virtual memory (VM) subsystem in Linux. Just a short version: Linux (like most modern OS) will always try to use free RAM for caching stuff, so
Mem: free will almost always be very low. Therefore the line
-/+ buffers/cache: is shown, because it shows how much memory is free when ignoring caches; caches will be freed automatically if memory gets scarce, so they do not really matter.
A Linux system is really low on memory if the
free value in
-/+ buffers/cache: line gets low.
For more details about the meaning of the numbers, see e.g. the questions:
Changes in procps 3.3.10
Note that the output of
free was changed in procps 3.3.10 (released in 2014). The columns reported are now "total", "used", "free", "shared", "buff/cache", "available", and the meanings of some of the values changed, mainly to better account for the Linux kernel's slab cache.
See Debian Bug report #565518 for the motivation, and What do the changes in
free output from 14.04 to 16.04 mean? for more details information.