CentOS 5这种释放方法是相当地痛快,而且如果真是non-destructive operation的话那就太好了,jvm 的内存占用一下子减少了接近300m.
#sync
To free pagecache, dentries and inodes:
#echo 3 > /proc/sys/vm/drop_caches
This is a non-destructive operation and will only free things that are completely unused. Dirty objects will continue to be in use until written out to disk and are not freeable. If you run "sync" first to flush them out to disk, these drop operations will tend to free more memory.
再说说 free 命令
# free -m
total used free shared buffers cached
Mem: 497 438 59 0 20 325
-/+ buffers/cache: 92 404
Swap: 511 22 489
其中:
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
下面包含一个自动释放内存的脚本,网上学习的, 加入了crondtab计划任务了
# vim /root/shTools/freemem.sh
#!/bin/bash used=`free -m | awk 'NR==2' | awk '{print $3}'` free=`free -m | awk 'NR==2' | awk '{print $4}'` echo "===========================" >> /var/log/mem.log date >> /var/log/mem.log echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log if [ $free -le 100 ] ; then sync && echo 1 > /proc/sys/vm/drop_caches sync && echo 2 > /proc/sys/vm/drop_caches sync && echo 3 > /proc/sys/vm/drop_caches echo "OK" >> /var/log/mem.log else echo "Not required" >> /var/log/mem.log将脚本添加到crond任务,定时执行。
# echo "*/30 * * * * root /root/shTools/freemem.sh" >> /etc/crondtab