buffer/cache 一般用于磁盘或文件的缓存,一些shared memory 也会放在这里,一般情况下大部分都是可以回收的,在一些较新版本的Linux 中,free 命令会有一个available 的列,它表示在计算了可回收的buffer/cache的情况下可用的内存,可以参考一下。

Linux内存回收机制比较复杂,但一般来说会在内存不足的情况下主动去释放cache,在/proc/meminfo 里可以看到相对详细的数据,包括哪些内存是可以回收的,哪些是不能回收的。

如果你通过echo 1 > /proc/sys/vm/drop_caches 这种方法主动去清理的话,如果内存中有一些没有落盘的数据,会在这个时候去写回。

如果这个过程顺利进行,就不会有数据的丢失或损坏,但是下次你要使用这些文件,又需要重新从磁盘读到内存,所以大多数情况下没有正面意义,反而会降低效率。

不同版本的内核可能有一些差异,这个就需要具体去查看了。

作者:天净鲨
链接:https://www.zhihu.com/question/290633097/answer/485251755
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

邮箱地址不会被公开。 必填项已用*标注