在Linux里面可以通过“free”查看内存当前的使用量和空闲量:

在free命令的结果集中:
total,内存总容量(物理内存);
used,已经使用的内存数;
free,空闲的内存数;

它们三个的关系是:total = used + free;

shared,被多个进程共享的内存;
buffers,被OS Buffer的内存;
cached,被OS Cache的内存;

buffer和cache是有区别的:
Buffer的内存的数据:还没有,但需要被写到了磁盘
cached的内存的数据:从磁盘上读取到的,并驻留在内存中,以便于后续使用

外文的描述可能比较容易理解,是这样的:
A buffer is something that has yet to be “written” to disk.
A cache is something that has been “read” from the disk and stored for later use.

内存中不论Buffer还是cache都是为了提高IO性能而被设计出来的,它们被OS所管理。
而Linux为了提高IO Read的性能,总是会倾向于多cache一些数据的。表现出来的现象是:cached的值比较大。

释放被OS cache持有的数据:
命令:echo 3 > /proc/sys/vm/drop_caches

Shell:

在free命令的结果集中,还需要关注的是:“-/+ buffers/cache”。
它所对应的两个值(同一行)分别表示:
– buffers/cache,一个应用程序认为系统用掉的内存;(计算方法:“- buffers/cache” = used – buffers – cached)
+ buffers/cache,一个应用程序认为系统还有的内存;(计算方法:“- buffers/cache” = free + buffers + cached)

在操作系统中,被cache与buffer占用的内存因为可以被快速回收,所以会出现(应用认为系统可用的内存)对应的值比(应用认为系统用掉的内存)的值大很多的现象。
——————————
关于“free”命令本身:
来源(RPM包):

可以看到,free是由procps软件包提供的。

命令“free”的数据来源是:/proc/meminfo

关于/proc/meminfo:

———————————————
Done。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装