1. 程式人生 > >Mac的記憶體管理

Mac的記憶體管理

Mac下的資源管理和Windows的資源管理是完全不同的兩種概念,Windows認為一個程式佔用太多的資源純屬浪費,而Mac認為,資源放在那裡白白不用才是浪費。  

所以在Windows下,當一個程式退出時,它所佔用的記憶體會被立即釋放,留給後來的程式使用,也就是說你走了你的位置馬上會被取代,即便你剛出去再回來也會發現你得重新找位置;而Mac不同,在Mac下當一個程式退出時,系統並不會立刻釋放程式所佔的記憶體,而是將它標記為“非活躍”(“活動監視器”中的“藍色”記憶體),當一個程式啟動時,Mac會優先分配可用資源(“活動監視器”中的“綠色”記憶體),只有當可用資源不夠用時,系統才會從“非活躍”中收回一部分資源供程式使用,所以在Mac下,你總會看見綠色很少,這是因為Mac優先佔用綠色。

不過不用擔心,當程式退出時,佔用的“非活躍”記憶體很小(僅保留程式啟動時所需的記憶體)。這樣做的好處是,一方面既保證程式有足夠的資源可用,另一方面又保證曾經啟動過的程式能被快速啟動,互不影響。也就是說在Windows下,人走茶涼,但在Mac下,人走了,茶還可以再熱一會兒,萬一你又回來怎麼辦。  

總之,在資源分配方面,Windows屬於順序佔用式,優先使用別人上次用過的記憶體,而Mac則是全新佔用式,優先分配可用資源,就好比是有空座的時候你先坐,沒空座的時候大家擠一擠;而在資源回收方面,Windows認為佔著茅坑不拉屎是浪費資源,而Mac認為當茅坑有的是時,你可以先佔著,以防止你隨時拉肚子,只有當茅坑不夠時,你才需要釋放,這也就是為什麼你在Mac下退出一個程式,再啟動時會發現要快一些的緣故。因為它的記憶體並沒有完全釋放,而是保留了啟動所需要的一部分記憶體。這就是它們管理的不同。  

如果你想釋放非活躍記憶體,可以在“終端”中輸入Purge,按return,即可釋放部分非活躍記憶體。

相關推薦

Mac記憶體管理

Mac下的資源管理和Windows的資源管理是完全不同的兩種概念,Windows認為一個程式佔用太多的資源純屬浪費,而Mac認為,資源放在那裡白白不用才是浪費。   所以在Windows下,當一個程式

iPhone/Mac Objective-C記憶體管理教程和原理剖析(一)基本原理

此文版權歸作者Vince Yuan (vince.yuan#gmail.com)所有。歡迎非營利性轉載,轉載時必須包含原始連結http://vinceyuan.cnblogs.com/,且必須包含此版權宣告的完整內容。 版本 1.1  發表於2010-03-08 前言 初學objectice-C的朋友都

Mac服務管理-Launchd(轉)

dir keepal item tcp/ip 開發 定時 ram com tdi 背景: 在Mac下沒有像Linux那樣有很多的關於init方面的工具,從init的發展歷史https://en.wikipedia.org/wiki/Init上可以知道,Mac使用的是Lau

第四節:FreeRTOS 記憶體管理

目錄 記憶體管理的介紹 記憶體碎片 Heap_1-5記憶體分配的區別 Heap_1:適用於一旦建立好記憶體,就不刪除的任務。       (本質是分配的大陣列做記憶體堆.) Heap_2:適用於重複分配和刪除具有相同堆疊空間任務。(本質是分配的大

Objective-C高階程式設計:iOS與OS X多執行緒和記憶體管理

這篇文章主要給大家講解一下GCD的平時不太常用的API,以及文末會貼出GCD定時器的一個小例子。 需要學習的朋友可以通過網盤免費下載pdf版 (先點選普通下載-----再選擇普通使用者就能免費下載了)http://putpan.com/fs/cy1i1beebn7s0h4u9/ 1.G

找工作筆試面試那些事兒(3)---記憶體管理那些事

作者:寒小陽 時間:2013年8月。 出處:http://blog.csdn.net/han_xiaoyang/article/details/10676931。 宣告:版權所有,轉載請註明出處,謝謝。   七、記憶體管理        

記憶體管理+記憶體佈局

記憶體管理 8.1 作用域 C語言變數的作用域分為: l  程式碼塊作用域(程式碼塊是{}之間的一段程式碼) l  函式作用域 l  檔案作用域 8.1.1 區域性變數 區域性變數也叫auto自動變數(auto可寫可不寫),一般情況下程式碼塊{}內部定義的變數都是自

Linux記憶體管理(最透徹的一篇)

摘要:本章首先以應用程式開發者的角度審視Linux的程序記憶體管理,在此基礎上逐步深入到核心中討論系統實體記憶體管理和核心記憶體的使用方法。力求從外到內、水到渠成地引導網友分析Linux的記憶體管理與使用。在本章最後,我們給出一個記憶體對映的例項,幫助網友們理解核心記憶體管理與使用者記憶體管理之

[讀書筆記]iOS與OS X多執行緒和記憶體管理 [GCD部分]

3.2 GCD的API 蘋果對GCD的說明:開發者要做的只是定義想執行的任務並追加到適當的Dispatch Queue中。 “Dispatch Queue”是執行處理的等待佇列。通過dispatch_async函式等API,在Block

c++之動態記憶體管理

1.new/delete 和operator new/operator delete和malloc/free的關係 ①new呼叫operator new分配空間②new呼叫建構函式初始化物件。③delete呼叫解構函式清理物件 ④delete呼叫operator delete釋放空間 ⑤ope

Java_記憶體管理和繼承

Java 記憶體管理 例項 public class Test { public static void main(String[] args) { // TODO Auto-generated method

Android 記憶體管理記錄

專案中用到大量大圖,造成快速切換Activity後記憶體不足,如登入介面用到3M高清大圖,裝置選擇用到5張大圖背景疊加效果,主介面用到了5張遮罩大圖,設定介面總的子activity中也有大圖出現。 啟動Splash——裝置選擇介面(保留棧低,不finish,但會把背景圖片回收)-->主介面-

AMS之記憶體管理

原文地址:http://www.jianshu.com/p/72045d243b44 參考資料地址:http://book.51cto.com/art/201109/291375.htm 記憶體管理包括兩個部分 1.當應用程式關閉後,後臺對應的程序並沒有真正退出,以便下次啟動時能夠

三、Java虛擬機器自動記憶體管理機制、物件建立及記憶體分配

  1、物件是如何建立: 步驟:    (1)、虛擬機器遇到new <類名>的指令---->根據new的引數是否在常量池中定位一個類的符號引用    (2)、檢測該符號引用代表的類是否已經被載入、解析、和初始化。(如果沒有則

第七章—記憶體管理【計算機作業系統】

7.1 記憶體管理需要滿足哪些需求? 重定位、保護、共享、邏輯組織和物理組織。 7.2 為什麼需要重定位程序的能力? 通常情況下,並不能事先知道在某個程式執行期間會有哪個程式駐留在主存中。此外還希望通過提供一個巨大的就緒程序池,能夠把活動程序換入和換出主存,以便使處理器的利用率

【c/c++】記憶體管理

文章目錄 1.c/c++記憶體分配 2.C語言中動態記憶體管理方式malloc/calloc/realloc與free 3.C++記憶體管理方式 3.1new/delete操作內建型別 3.2new和delete操

8、【C++】記憶體管理

C++記憶體管理 一、記憶體分配方式     在C++中記憶體被分為5個區,分別是:棧區、堆區、自由儲存區、全域性/靜態儲存區和常量儲存區。 1、棧區     在執行函式時,函式內區域性變數的儲存單元都可一在棧上建立,函式執行結束時,這些儲存單元自動被釋放。棧記憶體分配運算內建與

QEMU深入淺出: guest實體記憶體管理

原  文:http://blog.vmsplice.net/2016/01/qemu-internals-how-guest-physical-ram.html 作  者:Stefan Hajnoczi 領  域:Open source and virtuali

1Password 7 for Mac(密碼管理工具)中文版

1Password 7 for Mac是Mac上非常受歡迎的密碼管理器,主要用於管理各種不同型別的密碼,比如登入資訊、信用卡、密碼、銀行賬戶、電子郵件賬戶等,這裡帶來全新版本的1password 7 for mac 破解版,帶來了更多新功能和改進,使用更加便捷。 1password mac

記憶體管理函式(C++學習筆記 14)

一、C語言中的記憶體管理函式 記憶體分配函式主要有malloc( )和calloc( ),記憶體釋放函式是free( )。 這兩類函式的原型在stdlib.h中,要使用這些函式時,首先要用檔案包含: #include"stdlib.h" 或#include<stdli