内存中缓存cache和缓冲buff的概念_redis

total 总物理内存

used 已经使用的物理内存

free 没有使用过的物理内存

shared 多进程共享内存

buff/cache 读写缓存内存,这部分内存是当空闲来用的,当free内存不足时,linux内核会将此内存释放

buff 缓冲  为了提高操作系统的写能力

cache缓存   为了提高操作系统的读能力

Linux 操作系统

上图一共有2G内存  但是buff和cache就占了1.5个G了,这个并不是已经被读写完全使用了,这是优先将操作系统内存拿一部分出来,直接给缓存和缓冲区来用,未来有些数据读的时候很多东西首先被加载到缓存区里的 ,程序在读的时候优先都缓存区的内容,

缓存 是内存 平常存储在硬盘上 硬盘很慢 ,内存快

缓存本身要比 硬盘快

缓冲区 就是为了写

正常一次读写 在操作系统上 发起一次读写的时候

我们要写一个东西,比如word文档我们写很长一段,我们需要保存他,他并不是直接写到磁盘上  他首先将写的东西写到缓冲区里面区,然后等缓冲区积累了一定大小,比如1m或者4k  多少k的时候,他才把缓冲区内容 直接写到磁盘里面去,

比如我现在有1000斤苹果  我要把它运到隔壁屋里去

我是一个一个运快 还是找个筐子 一筐一筐运快

整个内容大小时不变的

只是说我们减少了 内存到磁盘之间交换的过程

交换的过程越多消耗的时间越多

计算机再写内容 首先写到缓冲区里面 缓冲区达到一定大小的时候 才把缓冲区写到硬盘里面去 这样为了减少内存和磁盘之间来回交互的过程,提高写的效率

缓冲 写

缓存 读

available 还可以被 应用程序 使用的物理内存

浏览器 也有缓存区

更详细的缓存介绍 如cdn缓存  浏览器缓存  看大师兄redis文档

若buff/cache过高而free过低,可用以下命令进行释放优化

echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。

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

echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。