buff/cache内存占用太高

我们在使用free -h或者(top命令)查看系统内存的时候,有时间会发现buff/cache很高,如下图
在这里插入图片描述
可以看到我总内存就1.8G,buff/cache就占用了1.2G。

什么是buff

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

什么是cache

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

buff和cache

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

手动清除buff/cache

sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

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分配器中的缓存对象。
/proc/sys/vm/drop_caches的值,默认为0

清除buff/cache后

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐