Linux free命令中的buffer和cache有什么区别?

在Linux的free命令输出中, 有一个buffer 和 cache 字段. 如下图:

1
2
3
              total        used        free      shared  buff/cache   available
Mem: 1009028 318676 114392 21640 575960 488928
Swap: 0 0 0

它们代表什么意思呢?

查资料后发现:

  • buffer 是某一个程序临时存数据的地方, 并且这些数据不能被别的程序使用. 举个带宽的例子:当你要立即发送大量数据的时候,但是网卡发送能力较低. 它会将这些数据保存在buffer里, 然后慢慢发送这些数据.
  • cache 是为了快速访问而将频繁用到的数据临时保存在内存里

另一个不同是cache将会多次使用, 而buffer只会使用一次.

但是他们都是为了处理数据而临时存储.