また、最初の行が示すように
total used free shared buffers cached
Mem: 7989 7734 254 0 28 7128
-/+ buffers/cache: 578 7411
(cached[7128] + buffers[28] + free[254]) を追加すると、およそ 2 行目の free[7411] 値
7128 + 28 + 254 = 7410
が得られます。
「Mem」行を見ないで、その下の行を見てください。
Linux カーネルは、I/O キャッシュ (およびその他の重要でないバッファーですが、この使用量のほとんどはキャッシュです) を提供するために、できるだけ多くのメモリを消費します。このメモリは、プロセスが要求したときに解放されます。 「-/+ buffers/cache」行は、I/O キャッシュが考慮された後に調整された値、つまり、プロセスが使用するメモリの量とプロセスが使用できる量を示しています (この場合、578MB が使用され、 7411MB 無料)
「Mem」行と「-/+ buffers/cache」行の使用済みメモリの差は、カーネルがキャッシュのためにどれだけ使用しているかを示しています:7734MB - 578MB =I/O キャッシュで 7156MB。プロセスがこのメモリを必要とする場合、カーネルは単純に I/O キャッシュのサイズを縮小します。