标签:
free命令可以用来查看系统内存使用情况。我一般习惯-m参数以MB的方式查看
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1020288 947960 72328 312 82656 647740
-/+ buffers/cache: 217564 802724
Swap: 2097148 466656 1630492
其他参数
解释:
所以,可以供程序使用的内存,应该看+buffers/cache(),而不是free。
那明明已经开始使用 swap了,怎么能说内存还充足呢?
照我的理解是,系统在分配内存的时候,如果发现内存不足,会释放一批旧的cache,把空间腾出来给新申请的进程用, 有时候释放不充分或者不及时,于是开始使用到swap了!
手动释放缓存
使用sync命令可以把buffer强制写入硬盘,有时候怕配置没有生效,会使用它强制写到硬盘。如果系统突然断电,buffer的数据没保存,是会丢失的!其实,大多数情况下,占用内存的都是cache,而不是buffer!
下面来说说怎么使用sysctl强制释放缓存,和内存释放相关的内核参数是vm.drop_caches,vm.drop_caches可以设置为0、1、2、3。
说明
0 采取措施之前的默认值
1 释放pagecache
2 释放dentries 和 inodes
3 释放pagecache、dentries和inodes
实际操作可以使用如下的sysctl,也可以使用echo 3 > /proc/sys/vm/drop_caches,效果一样!
[root@localhost ~]# sysctl vm.drop_caches=3
vm.drop_caches = 3
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 996 88 907 0 0 12
-/+ buffers/cache: 75 920
Swap: 2047 455 1592
不过这个还是会慢慢涨起来的!
参考:http://blogread.cn/it/article/7195?f=wb
标签:
原文地址:http://www.cnblogs.com/leezhxing/p/5404329.html