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