我们在使用free-h查看系统内存的时候,有时候会发现buff/cache很高>free-available表示应用可以申请的内存是什么buffbuff(BufferCache)是I/O缓存,用于内存和硬盘缓冲,是io设备的读写缓冲区。根据磁盘的读写进行设计,将分散的写操作集中起来,减少磁盘碎片和硬盘的重复寻道,从而提高系统性能。什么是缓存缓存(PageCache)是一种高速缓存,用于CPU和内存之间的缓冲,是文件系统的缓存。保存读取的数据,重新读取时如果命中(找到需要的数据),则不读取硬盘,如果没有命中,则读取硬盘。里面的数据会按照阅读频率进行整理,阅读频率最高的内容会放在最容易找到的位置,不再阅读的内容会放在后排,直到删除。它们都占用内存。两者都是RAM中的数据。简单的说就是buff即将写入磁盘,cache是??从磁盘读取。目前进程实际使用的内存的计算方式是使用-buff/cache。释放buff/cache内存后,我们还能使用的内存量为free+buff/cache。通常,我们频繁访问文件后,buff/cache的使用率会增加。clearbuff/cache手动clear>sync>echo1>/proc/sys/vm/drop_caches>echo2>/proc/sys/vm/drop_caches>echo3>/proc/sys/vm/drop_cachessync:allunwritten系统buffer写入磁盘,包括修改的i节点,延迟块I/O,读写映射文件echo1>/proc/sys/vm/drop_caches:clearpagecacheecho2>/proc/sys/vm/drop_caches:清除并回收slab分配器中的对象(包括目录条目缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,很多缓存数据的实现都使用了pagecache。echo3>/proc/sys/vm/drop_caches:清除pagecache和slab分配器中的缓存对象。/proc/sys/vm/drop_caches的值,默认为0定时任务清除>vimclean.sh#!/bin/bash#每两小时清除一次缓存echo"开始清除缓存"sync;sync;sync#写入硬盘,防止数据丢失sleep20#延迟20秒echo1>/proc/sys/vm/drop_cachesecho2>/proc/sys/vm/drop_cachesecho3>/proc/sys/vm/drop_caches>chmod+xclean.sh>crontab-e#每两个小时执行一次0*/2***/opt/clean.sh设置crond启动和启动systemctlstartcrond.servicesystemctlenablecrond.service原文链接:https://rumenz.com/rumenbiji/。..微信公众号:入门站
