前一段时间一咬牙,把1核1g的服务器升级成了2核2g,现在是有点后悔的,因为平常网站根本用不着这么大的(虽然依旧是低配,但对于个人来说,cpu内存太充裕了)。以后一段时间也没怎么管,只是安装了vpsmate查看一些系统信息,基本都是接近100%空闲。最近突然发现内存占用了近86%,这太让我惊讶了!因为自己的服务器自己了解,就一个个人博客时不时更一下内容,其他的一些虚拟host都是测试用的,基本不会占用内存,也没有安装什么其他的软件,内存不可能有这样的占比。

网上查了一下,发现都是在修改一个/proc/sys/vm/drop_caches变量,说是修改这个变量能够释放内存。那么干嘛linux系统不自动释放呢。我甚至想着说,系统不管,我自己管,自己加一个contrab系统任务就好了。

具体释放过程如下:
free -m
查看内存使用情况

sync
类似mysql中的reflush,将缓存内容写入到磁盘,清空缓存。

echo 3 > /proc/sys/vm/drop_caches
修改变量值,释放内存

free -m
再次查看内存使用情况

free -m 列表参数说明

引用total 内存总数, used 已经使用的内存数, free 空闲的内存数, shared 多个进程共享的内存总额。
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小。
-buffers/cache 的内存数:used - buffers - cached +buffers/cache 的内存数:free + buffers + cached 可用的memory=free memory+buffers+cached。
如果因为是应用有像内存泄露、溢出的问题,从swap的使用情况是可以比较快速可以判断的。