Linux中buff/cache内存占用过高,手动释放内存

buff/cache内存占用太高

我们在使用free -h或者(top命令)查看系统内存的时候,有时间会发现buff/cache很高,如下图:(可以看到总内存就251G,buff/cache占用了174G)

什么是buff

buff(Buffer Cache)是一种I/O缓存,用于内存和硬盘的缓冲,是io设备的读写缓冲区。

什么是cache

cache(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,是文件系统的cache。把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。它们都是占用内存。两者都是RAM中的数据。

buff和cache

简单来说,buff是即将要被写入磁盘的,而cache是被从磁盘中读出来的。

手动清除buff/cache

/proc/sys/vm/drop_caches的值,默认为0

sync                                   # 将所有未写的系统缓冲区写到磁盘中

echo 1 > /proc/sys/vm/drop_caches      # 清除page cache

echo 2 > /proc/sys/vm/drop_caches      # 清除回收slab分配器中的对象
                                       #(包括目录项缓存和inode缓存)。
                                       # slab分配器是内核中管理内存的一种机制,
                                       # 其中很多缓存数据实现都是用的pagecache。

echo 3 > /proc/sys/vm/drop_caches      # 清除pagecache和slab分配器中的缓存对象。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内存buffer/cache很大是因为Linux系统采用了一种称为页缓存(Page Cache)的机制来提文件系统的性能。具体来说,当文件被读取到内存时,Linux会将读取到的文件数据缓存到内存的页缓存,以便下次访问相同文件时可以直接从页缓存获取,而不需要再次从磁盘读取。这种机制可以大大提升系统IO的性能。 Linux内存buffer/cache的大小受到系统资源管理的影响,它会充分利用可用的内存空间来提供更效的文件访问。当系统运行时,如果有大量的可用内存,并且没有其他进程需要使用,Linux会将这些多余的内存用于buffer/cache。这样一来,当需要从磁盘读取文件时,大部分情况下可以直接从内存获取,而不必再次访问磁盘,从而大大提系统的响应速度。 值得注意的是,虽然buffer/cache占用了大量内存,但这些内存并不是完全被占用,而是可以根据需要被释放的。当其他程序需要更多的内存时,Linux会自动将buffer/cache的数据释放出来,以满足其他程序的需求。这个过程被称为自动缓存(Automatic caching),可以确保系统内存始终处于最佳状态。 总而言之,Linux内存buffer/cache很大是Linux系统为了提文件系统的性能而采取的一种机制。通过将文件数据缓存到内存,可以减少对磁盘的读取操作,从而大大提升了系统的响应速度。同时,这些内存可以根据需要进行释放,确保系统内存始终处于最佳状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值