2010年10月20日 星期三

Apple 的記憶體管理:你老是覺得記憶體不夠用嗎?



大家總是覺得os x標註為free的[記憶體]往往一下子就用完了,所以常常很緊張,覺得是不是[記憶體]不夠用。

其實這是大家對Unix系統的[記憶體]管理方式太不了解,思維還停留在Windows系統下。

簡單的說,Mac OS X的[記憶體]使用情況分為:wired, active, inactive和free四種。

  1. wired是系統核心佔用的,永遠不會從系統物理[記憶體]種驅除。
  2. active表示這些[記憶體]數據正在使用種,或者剛被使用過。
  3. inactive表示這些[記憶體]中的數據是有效的,但是最近沒有被使用。
  4. 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,導致時間一長系統可用[記憶體]越來越少。因此常常需要重新啟動。

沒有留言: