91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>通訊/手機編程>

iOS系統為一個APP分配的內存

大小:0.3 MB 人氣: 2017-09-25 需要積分:1

下圖是iOS系統為一個APP分配的內存,如下:

iOS系統為一個APP分配的內存

內存分類(RAMROM

RAM:運行內存,不能掉電儲存;

ROM:儲存性內存,可以掉電儲存,例如:內存卡,flash;

RAM的訪問速度要遠高于ROM,價格也要高;

CPU只能從RAM直接讀取指令;

app程序一般存放于ROM中。啟動app時,系統會把開啟的app程序從ROM中轉移到RAM中。

內存分區

iOS中主要是棧區(stack)、堆區(heap)、全局區/靜態區(staic) ;

棧區

存放局部變量,先進后出,一旦出了作用域就會被銷毀,函數跳轉地址,現場保護等

棧區的地址從高到低分配

堆區

堆區的內存分配使用的是alloc;

堆區的地址是從低到高分配;

ARC原理是基于堆區,編譯器在編譯的時候給對象自動添加retain,release,autorelease;

在ios中,堆區的內存是應用程序共享的,堆中的內存分配是系統負責的;

全局區

包括2個部分:未初始化和初始化; 也是說,在內存中是放在一起的,比如:int a;未初始化, int a = 10 初始化的 2者都在全局區/靜態區;

常量區:常量字符串及時放在這里的;

代碼區:存放app代碼;

tips:

堆區需要程序猿管理內存,是由alloc分配的內存,一般速度比較慢,容易產生內存碎片;

棧區不需要程序猿管理內存,由編譯器自動分配并釋放,速度快;

當一個app啟動后,代碼區,常量區,全局區大小都是已經固定的,因此指向這些區的指針不會產生崩潰性的錯誤,而堆區和棧區是時時刻刻變化的(堆得創建和銷毀,棧的彈入和彈出),所以當使用一個指針指向這個2區里面內存的時候,一定要注意內存是否已經被釋放,否則會產生程序崩潰(即野指針報錯)

iOS的內存管理

這里按照蘋果文檔所述,重點對堆內存分配整理下。

首先,iOS和其它系統一樣,內存分頁,每頁4K。多個頁構成一個region統一管理,負責管理的對象是VM object,其中包含了pager、size、resident pages等諸多屬性。不管是Objective-C的[NSObject alloc],還是C代碼的對內存分配,最終重任都會落到malloc庫上,釋放也是如此,最終都將使用malloc庫中的free()。

malloc庫中有很多malloc的同族函數可以動態分配內存,會結合參數在free pages中進行最適分配。如果分配的內存比較大,可以直接使用vm_allocate,得到一個VM對象(與Linux類似),這個在實際使用前不分配物理內存。malloc的內部實現都是開源的,感興趣的可以去了解去看。

此外,對于malloc,還有一個Zone的概念(貌似與Linux的概念不完全相同),可以簡單理解為一組free page單元,可以統一管理操作。默認情況,在第一次調用malloc時,系統會生成一個default zone,后續的默認分配在此進行。比如,malloc_zone_xxx()函數都是對特定的zone進行分配操作,執行zone-》xxx()。

最后強調一下iOS特別需要注意的點:

當前的主流iPhone實際物理內存都不超過1G,可以說不算大。不過和Android機比起來,我不得不為蘋果的設計稱贊,1G空間利用得如此高效,性能不差,也控制了發熱。

iOS引用計數原理

- 引用計數機制只使用在堆中,那么所有不保存在堆中的數據的引用計數都為-1。

- 在OC中幾乎所有不可變對象(常量)都存在常量區,內存管理由系統來做,引用計數為-1。

- 對象引用計數降至0,那么對象所在的內存也許會回收。

- retain 遞增引用計數

- release 遞減引用計數

- autorelease 清理「自動釋放池」時,在遞減保留計數

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 成人在线天堂 | 久久草在线观看 | 天天影视网天天影网 | 三级国产在线 | 免费高清在线爱做视频 | 天天色综合4 | 国产精品久久久久久久久久影院 | 国产三级国产精品国产普男人 | 中文字幕亚洲一区婷婷 | 亚洲毛片免费在线观看 | 国产成年网站v片在线观看 国产成人91青青草原精品 | 播五月婷婷 | 日本日本69xxxx| 天堂免费视频 | 岛国片欧美一级毛片 | 天堂资源wwww在线看 | 天天干天天色天天射 | 成人国产精品一级毛片了 | 狠狠色狠狠色综合日日32 | 国产精品李雅在线观看 | 亚洲国产成人在人网站天堂 | 久久国产精品无码网站 | 午夜999 | 国产精品大全 | 国产一级aaa全黄毛片 | 中文字幕在线乱码免费毛片 | 伊人久久99 | 91成人免费视频 | 久久丁香视频 | 511韩国理论片在线观看 | 成年黄网站免费大全毛片 | 午夜69成人做爰视频网站 | 天天做天天爱夜夜爽女人爽宅 | 天天色狠狠干 | 夜夜春宵翁熄性放纵30 | 色妞基地 | 毛片小视频| 91极品女神私人尤物在线播放 | 人人操天天射 | 色吧亚洲欧美另类 | 激情伦成人综合小说 |