基本使用
free是一个内存查看工具,使用起来非常简单:
free -m ## 单位是M 也可以是-g -k
[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中,等到达到一定量的数据,再一次性写入硬盘。这样,对应用程序而言,写数据的效率提高了。