我们在Linux用free -m 查看linux内存使用情况。-m 参数就是用 M显示内容使用情况。这时回显会出现几个结果。 Mem 是 内存的使用情况总览表。 totel:机器总的物理内存 单位为:M used:用掉的内存。这里是从系统的层面看到的。 free:空闲的物理内存。这个也是从系统的层面看到的。
物理内存=系统看到的用掉的内存+系统看到空闲的内存。 我们平时看内存的使用也就看这些。
shared:多个进程共享的内存总和,当前废弃不用。 buffers:系统分配但未被使用的buffers 数量。 cached: 系统分配但未被使用的cached数量。
先给出公式: total = used + free ;total = |+ buffers/cache|+|- buffers/cache| 这里指是绝对值;
给程序预留的内存空间 = buffers+cached 。 内存使用上来说,linux 系统会把物理内存占用一部分,也就是used的大小,然后在这里内存里面分一部分来供所有的程序实际使用。就如同现在有个10亩地地的大田(总内存),我买个5亩准备盖房子,我声明我圈到院子里的都是我的了,并且我盖上了围墙,我圈起来,这5亩地就是used的大小,;别管我咋使用了,然后我拿出1亩地来盖房子。盖房子的这些地就是系统程序实际使用的,这部分就是:- buffers/cache,然后我还会预留 出来一部分在房子外开辟临时停车棚、临时菜园等之类的,buffers和cached就是这些除了房子之外围墙之内的所有的可以供我临时使用所占用地了,,buffers和cached可以理解为 5亩地-盖房子的1亩 剩下的都是可以供我使用的。所以看来,我占用的就是5亩地。但实际上只有1亩地用于住房,剩下的地就是供我随意支配使用了。
所以得出来:我实际占用的地=用于住房的地(- buffers/cache)= 围墙内的5亩地(used)-可以供我临时使用的地 (buffers+cached) 而这个- buffers/cache 不是仅仅是系统占用的,是系统和系统中的程序共同占用的实际用到的内存空间!
-/+ buffers/cache:可以分为两部分 + buffers/cache;- buffers/cache。这两部分的关系是: 总的物理内存=|+ buffers/cache|+|- buffers/cache|;总的物理内存=两个buffers/cache的物理值相加的和。
这个是从程序的角度上来看的。 - buffers/cache:程序角度上看已经使用的内存数,这才是程序实实在在用掉的内存数。 + buffers/cache:程序角度上看未使用、可用的内存数。
实际上来说,程序占用的真正内存就是:- buffers/cache 的数值。 所以看系统,真正已经用的内存数:used-(buffers+cached)的值。 真正未用到的内存数:free+buffers+cached 的值。 (责任编辑:IT) |