
# Linux操作系统云服务器中buffer和cache占用内存怎么办？
#### 问题描述
系统长期运行后，free命令查看系统内存，发现剩余内存不足，大部分是buffers和cached。
![](https://support.huaweicloud.com/trouble-ecs/zh-cn_image_0192699189.png "点击放大")
#### 问题分析
在 Linux 的内存管理中，buffer是Linux内存中的Buffer cache。cache是Linux内存中的Page cache。
- Buffer cache：主要是当系统对块设备进行读写的时候，对块进行数据缓存的系统来使用，即对块的操作会使用buffer cache进行缓存。 例如：当对一个文件进行写操作的时候，page cache 的内容会被改变，而buffer cache则可以用来将page标记为不同的缓冲区，并记录是哪一个缓冲区被修改了。内核在后续执行脏数据的回写writeback时，就不用将整个page写回，而只需要写回修改的部分即可。
  
- Page cache：主要用来作为文件系统上的文件数据的缓存来用，尤其是针对当进程对文件有read/write操作的时候。Linux默认会将读取的文件内容缓存在内存中，方便后续使用。
Linux默认使用的是lazy模式，即内存如果还够用，则不会主动释放当前的占用的buffer和cache，如果需要内存，则会自动释放buffer和cache，所以正常情况下，cache占用高不会对系统造成影响。
#### 处理方法
buffer和cache是Linux对系统设备的正常环境，占用内存并不会影响系统的运行，反而强制清除cache会导致读取磁盘数据时需要重新通过IO从磁盘读取，影响系统运行速度。
![](https://support.huaweicloud.com/trouble-ecs/public_sys-resources/note_3.0-zh-cn.png)
如需清理系统buffer和cache，可以执行以下命令：
**echo 3 \> /proc/sys/vm/drop_caches**
根据内存大小可能需要几秒钟，执行完后响应内存被释。
