内存查看工具之free

原文链接:内存查看工具之free
发布时间:2018-12-03 23:32:11

基本使用

free是一个内存查看工具,使用起来非常简单:

1
free -m ## 单位是M 也可以是-g -k
1
2
3
4
5
[KentZhang@ALVPCFLKF-192-168-29-61 707]$ free -m
total used free shared buffers cached
Mem: 32186 31827 359 0 704 22448
-/+ buffers/cache: 8674 23511
Swap: 7999 11 7988

解释含义

从第三行起,解释其含义。

第三行:total 为 32186M,表示系统的物理内存;used 为31827M,表示系统已经使用的内存,注意,这里的used包含了后面的buffers和cached;shared表示共享内存的大小;buffers和cached则是表示用于特殊目的的内存,其中的一个目的是为了提高IO访问速度,buffers是用来写的,cached是用来读的。

第四行:used 为8674M,表示系统实际使用的内存,这些内存无法再被使用,free为23511M,表示可使用的内存。

显然,23511 = 359 + 704 + 22448 8674 = 32186 - 23511

第五行: 是交换区的使用情况,这里暂且不谈。

cache和buffer

内存的访问速速很难快,是纳秒级别的,相对硬盘访问的速度就很慢,是毫秒级的,前者是后者的数万倍。为了解决这个矛盾,于是系统就有了cache和buffer。

有时候,一个硬盘的相同的内容,有可能在短时间内被读出多次,比如一个机器被多个用户使用,于是系统在第一次从硬盘读出数据时,就存入cache中,下次再读的话,就直接从cache读取,那么速度就快了很多。

同样,在向硬盘写入数据时,每次写入数据也是很费时的,要尽量减少写硬盘的次数,于是系统不会立刻把数据写入硬盘,而是先写入buffer中,等到达到一定量的数据,再一次性写入硬盘。这样,对应用程序而言,写数据的效率提高了。