free-简单明了解释清楚怎么看内存使用

free命令能够用来查看系统内存使用状况。我通常习惯-m参数以MB的方式查看node

[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

其余参数缓存

  • -b  以Byte为单位显示内存使用状况。 
  • -k  以KB为单位显示内存使用状况。 
  • -m  以MB为单位显示内存使用状况。
  • -g   以GB为单位显示内存使用状况。 
  • -o  不显示缓冲区调节列。 
  • -s<间隔秒数>  持续观察内存使用情况。 
  • -t  显示内存总和列。 
  • -V  显示版本信息。

解释:spa

  •    total:是总的物理内存
  •    used:使用中的内存
  •    free:彻底空闲的内存
  •    shared:多个进程共享的内存 
  •    buffers:写缓存,在写入磁盘以前,先把数据缓存一段时间,能够释放
  •    cache:读缓存,读取过的文件,会缓存一段时间。能够释放
  •    -buffers/cache:应用程序实际使用中的内存大小,等于used-buffers-cached(Mem列的三个数)
  •    +buffers/cache:可供使用的内存总量,等于free+buffers+cached(Mem列的三个数)
  •    Swap:不解释,都能看懂的

因此,能够供程序使用的内存,应该看+buffers/cache(),而不是free。code

那明明已经开始使用 swap了,怎么能说内存还充足呢?blog

照个人理解是,系统在分配内存的时候,若是发现内存不足,会释放一批旧的cache,把空间腾出来给新申请的进程用, 有时候释放不充分或者不及时,因而开始使用到swap了!进程

手动释放缓存内存

使用sync命令能够把buffer强制写入硬盘,有时候怕配置没有生效,会使用它强制写到硬盘。若是系统忽然断电,buffer的数据没保存,是会丢失的!其实,大多数状况下,占用内存的都是cache,而不是buffer!get

下面来讲说怎么使用sysctl强制释放缓存,和内存释放相关的内核参数是vm.drop_caches,vm.drop_caches能够设置为0、一、二、3。it

说明class

   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

相关文章
相关标签/搜索