Mac OS 記憶體管理知識

2021-06-19 17:05:41 字數 2277 閱讀 3166

先請看下面三張,是mac os系統的「活動監視器」的截圖,分別是8g,4g,2g記憶體。

使用mac os系統時,關注記憶體的使用情況有時是必要的。

常常使用windows系統的朋友,可能覺得mac os系統一啟動好像就一下子把記憶體全用光了,很緊張。

其實是對mac os(或linux)系統的記憶體管理方式不理解造成的,還在使用windows系統的思維來看待這個問題。

下面我們來了解一下mac os的「活動監視器」的「系統記憶體」標籤:

「系統記憶體」標籤的餅圖中顯示的記憶體型別共有四種:wired(聯動記憶體), activez(活躍記憶體), inactive(非活躍記憶體),free(可用記憶體)四種。

四塊餅圖的總和等於安裝在電腦上的記憶體(ram)總量。

wired(聯動記憶體):

是系統核心占用的,此記憶體中的資訊無法移動到硬碟,因此必須保留在 ram 中。聯動記憶體的大小取決於當前使用的應用程式。

activez(活躍記憶體):

表示這些記憶體資料正在使用當中,或者剛剛被使用過。

inactive(非活躍記憶體):

表示這些記憶體中的資料是有效的,現在沒有被使用,但最近曾經被使用過。

例如,如果您使用 mail 然後退出,則 mail 曾經使用的 ram 會標記為「非活躍」記憶體。此類「非活躍」記憶體可供其他應用程式使用,就像「可用」記憶體一樣。

但是,如果在其他應用程式占用此「非活躍」記憶體之前開啟 mail,則可以更快開啟 mail,因為其「非活躍」記憶體會轉換為「活躍」記憶體,而不是從較慢的硬碟載入 mail。

free(可用記憶體):

指當前未使用的記憶體,這些空間可以隨時被程式使用。

虛擬記憶體大小:

這是指您的 mac 上所有程序的虛擬記憶體總量。 

入頁面(page outs) /  出頁面(page outs):

這是指在 ram 和硬碟之間移動的資訊量。此數值是 mac os x 在 ram 和磁碟空間之間移動的累計資料量。

已使用的交換:

這是指拷貝到硬碟驅動器上交換檔案中的資訊量。

mac os(或linux)系統的記憶體管理方式:

mac os的記憶體管理非常高效。它會根據需要自動分配記憶體並調整記憶體的內容。

當free的[記憶體]低於某個值(這個值是由你的物理[記憶體]大小決定 的),系統則會按照以下順序使用inactive的資源。

首先如果inactive的資料最近被呼叫了,系統會把它們的狀態改變成active,並接在原有active[記憶體]邏輯位址的後面, 

如果inactive的[記憶體]資料最近沒有被使用過,但是曾經被更改過而還沒有在硬碟的相應虛擬[記憶體]中做修改,

系統會對相應硬碟的虛擬[記憶體]做修改,並把這部分物理[記憶體]釋放為free供程式使用。

如果inactive[記憶體]中得資料被在對映到硬碟後再沒有被更改過,則直接釋放成free。

最後如果active的[記憶體]一段時間沒有被使用,會被暫時改變狀態為inactive。

有了以上知識後,就可以對記憶體的使用情況做出自己的分析了。

當前可用的記憶體總量 = free(可用記憶體) + inactive(非活躍記憶體) 

如果你的系統裡有少量的free memeory和大量的inactive的memeory,說明你的記憶體是夠用的,系統執行在最佳狀態,只要有需要系統就會使用它們。

反之,如果系統的free(可用記憶體)和inactive(非活躍記憶體)都很少,而activez(活躍記憶體)很多,說明你的記憶體不夠用了,快加記憶體吧。

當然一開機,大部分記憶體都是free(可用記憶體),這時系統反而不在最佳狀態,因為很多資料都需要從硬碟調取,速度反而慢了。

同時關注「出頁面(page outs)」也是有必要的,前面有一句話已經提到了產生「出頁面」的原因。

出頁面 很多可導致效能不好,一般free(可用記憶體)和inactive(非活躍記憶體)都很少時,同時也會產生大量的「出頁面」。

可以從本文配套的三張看出來。

注:windows為了相容古老和不規範的程式,允許程式直接控制硬體,導致windows系統的權力不夠大,而許多windows程式也不規範,

因此在退出程序後往往許多[記憶體]沒有還給系統變成了invisible memory,導致時間一長系統可用[記憶體]越來越少。因此常常需要重新啟動。

Mac OS 記憶體管理知識

先請看下面三張,是mac os系統的 活動監視器 的截圖,分別是8g,4g,2g記憶體。使用mac os系統時,關注記憶體的使用情況有時是必要的。常常使用windows系統的朋友,可能覺得mac os系統一啟動好像就一下子把記憶體全用光了,很緊張。其實是對mac os 或linux 系統的記憶體管理...

記憶體管理知識

記憶體管理向來是c c 程式設計的一塊雷區,大家都不怎麼願意去碰她,但是有時不得不碰它。雖然利用c 中的 art pointer已經可以完全避免使用指標,但是對於對於指標的進一步了解,有助於我們編寫出更有效率的 也有助於我們讀懂以前編寫的程式。五大記憶體分割槽 在c 中,記憶體分成5個區,他們分別是...

記憶體管理知識

記憶體管理向來是c c 程式設計的一塊雷區,大家都不怎麼願意去碰她,但是有時不得不碰它。雖然利用c 中的 art pointer已經可以完全避免使用指標,但是對於對於指標的進一步了解,有助於我們編寫出更有效率的 也有助於我們讀懂以前編寫的程式。五大記憶體分割槽 在c 中,記憶體分成5個區,他們分別是...