- 论坛徽章:
- 0
|
空闲内存=free+buffers+cached
****并不能单独看used的值*****
从你上下两个图来看,你的内存使用量前后并没有变化,
只是在第一次和第二次之间,做了一些读写磁盘相关的
操作,linux把很大一部分内存拿来当缓存了。
说明一下基本的原理:
当linux第一次读取一个文件运行时,一份放到一片内存中cache起来,
另一份放入运行程序的内存中,正常运行,当程序运行完,关闭了,cache中的拿一分却没有释放
第二次运行的时候,系统先看看在内存中是否有一地次运行时存起来的cache中的副本,
如果有的话,直接从内存中读取,那样,速度就快多了。说明这种情况的很典型的例子是
启动firefox,由于firefox程序很大,因此第一次读取运行的时候很慢,尤其在速度不快的
老机器上,但是当你彻底关闭了firefox,ps看不到一个firefox进程,第二次再启动的时候
就比第一次明显快很多,这是由于这次系统是直接从cache中读取的firefox来运行,并不是从磁盘上读取的。再有一个例子:我们频繁使用的ls命令等基本命令,你运行的时候根本看不到硬盘灯闪,
因为这些常用的命令都是再第一次运行后就保存在cache中的,以后就一直从内存中读出来运行。
如果cache占用的内存过多了,影响正常运行程序需要的内存,那么会释放掉一部分cache内存,
但是总量会保持一个很高的值,所以,linux总是能最大限度的使用内存,就算
加到16G,32G内存,也会随着不断的IO操作,内存的free值会慢慢减少到只有几M,
想要内存不发生这种情况,只有一个办法:把内存加到比硬盘大。
这是linux的基本常识,希望普及一下,老有人问这样的问题。 |
|