內存管理

一、爲何進行內存管理app

  提升手機流暢度函數

  在程序開發中,應該及時將不用的數據回收,合理分配和管理內存,以提升程序的運行效率ui

規定運行起來的程序所佔用的內存不得超過20m指針

一旦超過 就會發送警告 ,若是app接到警告尚未進行處理的話,程序會閃退對象

大部分閃退的緣由都是由於內存沒有管理好繼承

每一個界面佔用內存累計增長內存佔用量內存

 

二、哪些行爲增長內存佔用開發

  1)建立對象get

  2)定義變量內存管理

  3)調用函數或者方法

 

  堆區,棧區,常量區,代碼區...

  可以看到和控制的區域:堆區和棧區

 

三、OC內存管理的範圍

  管理任何繼承自ONSObject的對象,對其它的基本數據類型無效

對象類型是程序運行過程當中動態分配的,存儲在堆區內存管理主要是 對堆區的對象的內存管理

 

1、內存管理的原理及分類

一、內存管理的原理

  搞清楚兩個概念:

  1)對象的全部權

  任何一個對象,均可能有一個或多個全部者

  如:person *p=[Person new];

  p就是對象的全部者

  Person *p1=p

  p1是p的全部者是對象的全部者

 

  任何本身建立的對象都歸本身全部

  new/alloc/copy的方法建立對象,可使用retain來得到一個對象的全部權

 

  2)引用計數器

  對象剛被建立時,默認計數值爲1,當計數器的值變爲0的時候,對象被銷燬

  (經過retainCount方法能夠打印對象引用計數器的值)

 

  MRC:手動內存管理

  ARC:默認環境爲ARC:automatic Reference count 自動引用計數器

  怎麼配置成MRC形式?

  target->Build Setting  automatic reference Counting (YES/NO)

  a、引用計數器做用:

  判斷對象要不要被回收的依據

  b、對引用計數器的操做

  想要管理對象佔用的內存,就要學會操做引用計數器

  1)常見操做:

    a、retain消息:計數器+1

    b、release消息:計數器-1

        原則:誰retain誰release

 

二、內存管理

  一、野指針(殭屍對象):

  殭屍對象:已經被銷燬的對象

  野指針:指向殭屍對象(不可用內存)的指針

  空指針:沒有指向存儲空間的指針(裏面村的是nil也就是-)

  

  二、內存泄漏

  若是在程序結束後,對象沒有被釋放,則成爲內存泄漏

相關文章
相關標籤/搜索