既然要清理内存,那么首先会看内存使用情况,看一下free命令:
[root@dstn proc]# free
total used free shared buffers cached
Mem: 515588 295452 220136 0 2060 64040
-/+ buffers/cache: 229352 286236
Swap: 682720 112 682608
-buffers/cache:应用程序使用的内存大小,used减去缓存值。
+buffers/cache:所有可供应用程序使用的内存大小,free加上缓存值。
这里主要看buffers和cached,cached缓存了对文件的读写page cache,buffers缓存了inode,dentry等文件系统的元数据。一般情况下cached是远大于buffers占用情况的,我们一般刷缓存就是刷cached。向/proc/sys/vm/drop_caches文件中写入数值可以使内核释放page cache,dentries和inodes缓存所占的内存。生产环境尽量不要用,用之前也要sync。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件
只释放pagecache:
echo 1 > /proc/sys/vm/drop_caches
只释放dentries和inodes缓存:
echo 2 > /proc/sys/vm/drop_caches
释放pagecache、dentries和inodes缓存:
echo 3 > /proc/sys/vm/drop_caches