彻底理解 linux 的内存回收

本文试图用最浅显的语言说明以下问题:

1、free 命令中的buffer/cache 是什么意思?

2、内存回收的机制是什么?

3、内存回收的门限是什么?也就是什么时候进行回收?

4、如何手动清除cache?

1、free 命令中的buffer/cache 是什么意思?

当我们的系统长时间运行一段时间后,执行 free 命令,会发现 buff/cache 占用的内存非常大,这里的 buffer/cache 到底是什么呢?又为什么会变得这么大呢?被它占用内存还能被其它进程正常使用吗?其实buff/cache 是指buffer cache 和 page cache,这里对这两个概念解释一下:

Page Cache

page cache 以page为单位,缓存文件内容。缓存在page cache中的文件数据,能够更快的被用户读取。同时对于带buffer的写入操作,数据在写入到page cache中即可立即返回,而不需等待数据被实际写到到磁盘,进而提高了上层应用读写文件的整体性能。

Buffer Cache

磁盘的最小数据单位为sector,每次读写磁盘都是以sector为单位对磁盘进行操作。

sector大小跟具体的磁盘类型有关,有的为512Byte, 有的为4K Bytes。无论用户是希望读取1个byte,还是10个byte,最终访问磁盘时,都必须以sector为单位读取,如果裸读磁盘,那意味着数据读取的效率会非常低。

同样,如果用户希望向磁盘某个位置写入(更新)1个byte的数据,他也必须整个刷新一个sector,言下之意,则是在写入这1个byte之前,我们需要先将该1byte所在的磁盘sector数据全部读出来,在内存中,修改对应的这1个byte数据,然后再将整个修改后的sector数据,一口气写入磁盘。

为了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值