Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2308753
  • 博文数量: 310
  • 博客积分: 6853
  • 博客等级: 准将
  • 技术积分: 2833
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-04 16:41
文章分类

全部博文(310)

文章存档

2013年(17)

2012年(42)

2011年(76)

2010年(71)

2009年(99)

2007年(2)

2006年(1)

2005年(2)

分类: LINUX

2006-10-12 23:08:40

内存管理机制
 
使用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) |
给主人留下些什么吧!~~