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