Isso porque a memória é preenchida com metadados do sistema de arquivos (também conhecidos como "buffers") e o conteúdo dos arquivos (também conhecido como "armazenado em cache") armazenado em cache pelo kernel.
Como é comum que programas / usuários acessem esse tipo de recurso várias vezes em um curto espaço de tempo e não usar memória é um desperdício, o kernel armazena em cache para que eles sejam acessados mais rapidamente do que seria lendo-os novamente o disco.
A quantidade exata de dados armazenados em cache é informada nas colunas 5 e 6:
total used free shared buffers cached Mem: 3838 2895 942 120 461 947 -/+ buffers/cache: 1487 2350 Swap: 4394 615 3779
Como os dados armazenados em cache podem ser descartados imediatamente se a memória for necessária para outra coisa, os dados armazenados em cache não serão realmente tirados e estarão disponíveis para os programas usarem.
A memória "real" (rede de buffers / dados armazenados em cache) usada / livre é reportada na terceira linha ("- / + buffers / cache:"):
total used free shared buffers cached Mem: 3838 2895 942 120 461 947 -/+ buffers/cache: 1487 2350 Swap: 4394 615 3779
Para facilitar, você pode adicionar alguns aliases para imprimir apenas a memória "real" usada / livre em ~/.bashrc
:
alias real_used="free -m | awk 'NR==3{print $3}'"
alias realf_free="free -m | awk 'NR==3{print $4}'"