从free命令看内存使用

free命令是查看内存使用情况的利器。 free命令的语法相对来说是比较简单的,如下:

usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
  -b,-k,-m,-g show output in bytes, KB, MB, or GB
  -l show detailed low and high memory statistics
  -o use old format (no -/+buffers/cache line)
  -t display total for RAM + swap
  -s update every [delay] seconds
  -c update [count] times
  -V display version information and exit

这个都比较容易理解,简单的翻译一下。

  1. -b -k -m -g 这是表示显示内存的单位,分别以字节、KB、MB及GB来显示。
  2. -l,因为在Linux系统中内存中有低区和高区之分,内核能够直接寻址的区域太小,好像是只有896M(在32位机器上),其它的都是高区域内存。如果指定-l选项,可以显示Low和High Region的内存总量。
  3. -o,不显示buffers和Cache信息。
  4. -s和-c ,可以让free命令一直运行,-s表示多长时间更新一次free命令的输出信息。-c选项表示一共输出多少次。

看一个具体的输出如下:
             total       used       free     shared    buffers     cached
Mem:      32797280   32578864     218416          0     112644   20436872
-/+ buffers/cache:   12029348   20767932
Swap:     33554424       1356   33553068

一,内存(交换区)使用信息
上面输出的第一行的信息如下:
  1. (total)表示物理内存(交换区)的总量。
  2. (used)已经使用的内存(交换区)总量。
  3. (free)空闲的物理内存(交换区)总量。
  4. (shared)共享的物理内存总量。
  5. (buffers)系统已经分配但没有被使用的缓冲区总量。表示当前空闲
  6. (cached)系统已经分配但没有被使用的缓存总量。表示当前空闲
二,缓冲和缓存数据信息
  1. (used),实际使用的buffers/cache的总量。
  2. (free),当前系统还没有被使用的buffers/cache 和 未被分配的内存之和,一般来说,这就是当前系统还可以使用的内存总量。

三,系统分配了哪些内存
上面看到物理内存的使用是 32578864,那么这些内存是给谁使用了?

根据上面的解释,那么系统当前已经分配的内存应该是这几个部分:buffers/cache的已经使用部分、内存的buffers和内存的cached(因为这是已经分配了的,只是没被使用)。
也就是说,下面这个式子是成立的:
(Mem).used = (-/+ buffers/cache).used+ (Mem).buffers + (Mem).cached 。

32578864 =12029348 + 112644 +  20436872//上面的输出数据替换之后

另外还可以发现 下面的数据是成立的:
(Mem).total = (buffers/cache).used + (buffers/cache).free 。

为什么会是这种情况,这不相当于所有的内存都是buffers或者cache,答案:是的。这和Linux的内存分配机制有关系。

在linux的内存分配机制中,如果有物理内存的话,都会全部优先使用,只有物理内存还有空闲,就绝对不会释放已经被分配的内存。哪怕是分配这个内存的进程已经不存在了,也不会释放这个进程所申请的内存。将所有这些内存都用作系统缓存。这样的话,就不需要经常向内核申请内存了,使得一方面内存分配效率提高,二方面(有时)分利于数据的读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值