2013年1月25日

不可信的free指令!?

我之前就對於free與gnome的記憶體統計有出入感到疑惑??然則一直沒有去追究,最近稍微有點了解到了,其實free是統計各個process間的user space的空間大小,然則linux並不會完整配置實體記憶體給他,有時process申請的heap space也不會一下子釋放,所以導致兩者有出入,換句話說,free指令統計出來的記憶體空間,跟實際的使用空間很有出入

每個process都有各自4G的virtual memory,然則有使用到才會配置,最常動態配置的便是heap,而process會自行管理heap,當申請的時候便在剩下的heap space挖出一塊空間配置給程式,程式歸還的時候process未必馬上抹除,他會先留下來如果短期內程式又有要求,就可以直接給出
更有甚者是,process heap是對kernel做請求,kernel還拖到真的使用到的時候,才將physical memory置給process,不然process heap配置的再多,也只是在virtual space上面

所以啦,加總所有process使用到的空間,未必等於真的physical memory的消耗,也就是說,free指令的結果,看看就好啦:P

參考資料:
http://hi.baidu.com/zzcqh/item/fa4f8eaa410e70736cd4551e
http://www.perfgeeks.com/?p=723

沒有留言: