大家總是覺得os x 標注為free的[內存]往往一下子就用完了。很緊張,覺得是不是[內存]不夠用。其實這是大家對unix系統的[內存]管理方式不清楚,思維停留在windows系統下。
簡單的說,Mac OS X的[內存]使用情況分為
wired, active, inactive和free四種。
wired是系統核心占用的,永遠不會從系統物理[內存]種驅除。
active表示這些[內存]數據正在使用種,或者剛被使用過,
inactive表示這些[內存]中的數據是有效的,但是最近沒有被使用
free, 表示這些[內存]中的數據是無效的,這些空間可以隨時被程序使用。
當free的[內存]低于某個值(這個值是由你的物理[內存]大小決定的),系統則會按照以下順序使用inactive的資源。首先如果inactive的數據最近被調用了,系統會把它們的狀態改變成active,并接在原有active[內存]邏輯地址的后面, 如果inactive的[內存]數據最近沒有被使用過,但是曾經被更改過而還沒有在硬盤的相應虛擬[內存]中做修改,系統會對相應硬盤的虛擬[內存]做修改,并把這部分物理[內存]釋放為free供程序使用。如果inactive[內存]中得數據被在映射到硬盤后再沒有被更改過,則直接釋放成free。最后如果active的[內存]一段時間沒有被使用,會被暫時改變狀態為inactive。
所以說,如果你的系統里有少量的free memeory和大量的inactive的memeory,說明你的[內存]是夠用的,系統運行在最佳狀態,只要需要,系統就會使用它們,不用擔心。而反之如果系統的free memory和inactive memory都很少,而active memory很多,說明你的[內存]不夠了。當然一開機,大部分[內存]都是free,這時系統反而不在最佳狀態,因為很多數據都需要從硬盤調用,速度反而慢了。
windows為了兼容古老和不規范的程序,允許程序直接控制硬件,導致windows系統的權力不夠大,而許多windows程序也不規范,因此在退出進程后往往許多[內存]沒有還給系統變成了invisible memory,導致時間一長系統可用[內存]越來越少。因此常常需要重新啟動。