Linux 内存Cache和Buffer理解
在 Linux 系统中,我们经常用 free 命令来查看系统内存的使用状态。在一个 RHEL6 的系统上,free 命令的显示内容大概是这样一个状态: [root@tencent64 ~]# free total used free shared buffers cached Mem: 132256952 72571772 59685180 0 1762632 53034704 -/+ buffers/cache: 17774436 114482516 Swap: 2101192 508 2100684 这里的默认显示单位是 kb,我的服务器是 128G 内存,所以数字显得比较大。这个命令几乎是每一个使用过 Linux 的人必会的命令,但越是这样的命令,似乎真正明白的人越少(我是说比例越少)。一般情况下,对此命令输出的理解可以分这几个层次: 不了解。 这样的人的第一反应是:天啊,内存用了好多,70个多 G,可是我几乎没有运行什么大程序啊?为什么会这样? Linux 好占内存! 自以为很了解。 这样的人一般评估过会说:嗯,根据我专业的眼光看的出来,内存才用了 17G 左右,还有很多剩余内存可用。buffers/cache 占用的较多,说明系统中有进程曾经读写过文件,但是不要紧,这部分内存是当空闲来用的。 真的很了解。 这种人的反应反而让人感觉最不懂 Linux,他们的反应是:free