内存管理机制
使用vmstat看到的free的内存是自由的内存,意思就是说处在free状态的内存,现在还没有被任何进程使用过。
假设你有一个进程A,申请了100M内存,那么这100M内存处于busy状态,也就是被占用状态,然后再Free它,但是你的程序并没有退出,这个时候,这100M内存处于cache状态,因为里面的数据有可能还会被用到。当你的程序退出后,这100M内存才真正处于free状态.
如果进程A申请了100M内存,使用后free掉,但是进程A并不退出,那么这100M的状态是cache。
这是后进程B再申请内存,
系统的申请顺序是,
首先查找属于Free状态的内存,即完全干净,没被任何进程使用过的内存。如果free的内存不够被分配,
则查找处于cache状态的内存。也就是曾经被进程申请,而现在又是放掉的,而且申请这些内存的进程还没有退出。如果cache状态的内存也不够分配,
则查找inactive队列里面的内存。inactive状态的内存是已经被某一进程申请,但是该进程暂时没有对该内存进行操作。
这是后系统会把inactive状态内存中的数据先写在swap(也就是文件系统中)里,然后临时借给正在申请内存的进程B用。这时候进程B在操作这些借来内存,因为这些内存本来就是进程A 的,在进程B还为使用完之前,
进程A也要使用了,系统就会把当前内存中的数据写入swap,然后再从swap中把刚才写入的进程A的数据重新调入到内存。这就是内存页面的换出和换入(page out/page in)。
所以一个系统是否繁忙,不能光看free状态的内存多少,而要看page out/page in的数值。如果页面交换的数值很高,说明系统当前内存是用非常紧张,系统需要临时借用其他进程的内存使用。
阅读(1699) | 评论(0) | 转发(0) |