读写文件时,Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这就是Cache Memory(缓存内存)。
即使程序运行结束后,Cache Memory也不会自动释放。这就会导致程序频繁读写文件后,可用物理内存会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以不必担心没有内存可用。
如果你希望手动去释放Cache Memory(缓存内存)的话也是有办法的。
cat /proc/sys/vm/drop_caches
0 //默认是0;1-清空页缓存;2-清空inode和目录树缓存;3-清空所有缓存
大多数GNU Linux都是默认开启了缓存机制的,查看配置文件 cat /proc/sys/vm/drop_caches 若为0的话,则表示开启了缓存机制的,这种机制在一直运行某个服务的时候非常有效,便于服务本身的快速读取,而作为桌面用户来说,打开的程序并不那么单一,所以桌面用户还是建议设置此配置文件为1,及时对系统缓存进行清理,释放空间以供其它程序使用。
[[email protected] ~]# sync //注意:在清空缓存之前使用sync命令同步数据到磁盘
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 15898 3029 12869 0 191 1064
-/+ buffers/cache: 1772 14125
Swap: 31999 0 31999
[[email protected] ~]# echo 3 > /proc/sys/vm/drop_caches
[[email protected] ~]# free -m //发现缓存明显减少了
total used free shared buffers cached
Mem: 15898 1770 14128 0 1 30
-/+ buffers/cache: 1738 14160
Swap: 31999 0 31999
清理缓存脚本:
#!bin/bash
sync
sync
echo 3 > /proc/sys/vm/drop_caches