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