在Ubuntu下查看内存,一般会使用free的命令,而最近使用这个命令的时候,好像突然察觉到有点不一样。平时都是只在乎free部分的数据,其他地方都是个未解之谜,网上查阅了一下资料,才发现这个变化有点了不得,立马记录下来(部分内容引用出处http://www.cnblogs.com/sparkdev/):
以前的free的输出:
free -m
total used free shared buffers cached
Mem: 2016 1973 42 0 163 1497
-/+ buffers/cache: 312 1703
Swap: 4094 0 4094
【第一行:Mem行就是我们所说的内存啦】
total:内存总数Total usable ram (i.e. physical ram minus a few reserved bits and the kernel binary code);
used:已经使用的内存数,有多少偏差,不能尽信;
free:空闲的内存数,未被分配的内存(感觉这里越多越浪费);
shared:多个进程共享的内存总额(应该是不能乱释放的部分);
buffers Buffer:缓存内存数(A buffer is something that has yet to be "written" to disk. );
cached Page:缓存内存数(A cache is something that has been "read" from the disk and stored for later use.)。
【第二行:-/+ buffers/cache是从前一直都不大理解的地方,现在正好整理一下:】
由于buffer和cache其实也是属于可用内存的一部分,就好像你刚刚进行了复制操作或者打开了某文件,操作系统都会把这些内容neng到内存里头,方便你以后用或者稍后更快写入硬盘,因此这部分占用的内存是”容易”被释放的,但注意,这里使用“容易”表示不一定肯定可以被释放
因此,以前是这样计算的:
-/+ buffer/cache used 表示扣除“容易被释放的“内存之后,实际被使用的内存大小,由 MEM used减去 MEM buffers减去MEM cached 计算得出
-/+ buffer/cache free 表示加上“容易被释放的“内存之后,实际可被分配使用的内存大小,由MEM free加上MEM buffers加上MEM cached计算得出
【第三行:就是传说中的swap空间了】
自从计算机性能上了一大台阶之后,大家都不怎么关注他了。根据我一家之言,这是在硬盘挖一大块空间出来作为内存的交换空间,说白了就是作为虚拟内存使用,说到虚拟内存,大家都会觉得不用好过用的了,本人曾经发生过虚拟内存被用爆的场景,相信大家都不希望发生那种情形的,最后只能强制关机了,因为操作系统被这个玩意儿直接拖垮了。如果有兴趣可以去文章开头那位大牛的博客了解一下swap。
OK,以上就是旧版free命令的一些输出,下面开始来新free
free
total used free shared buff/cache available
Mem: 1016060 542592 102148 29912 371320 240232
Swap: 0 0 0
眼尖的大家可能已经发现了,其实差别也很明显,第二行不见了,然后第一行多了一个叫做available的东西,顺便帮buffer和cache合并了。
根据旧版各个字段的分析,根据本人瞎猜的经验,应该说在于buffer和cache都是属于”容易“被释放的,但实际上又不是能够100%被解放出来,那么之前第二行那种评估方式去计算系统可用内存其实有失偏颇的,于是现在系统直接帮你算了一个MEM available出来,如果要新建一个进程那么首先还得看这个剩余可用的内存够不够用。下面是来自官方更新的原文
MemAvailable: An estimate of how much memory is available for starting new applications, without swapping. Calculated from MemFree, SReclaimable, the size of the file LRU lists, and the low watermarks in each zone. The estimate takes into account that the system needs some page cache to function well, and that not all reclaimable slab will be reclaimable, due to items being in use. The impact of those factors will vary from system to system.
网友评论