一、爲何進行內存管理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也就是-)
二、內存泄漏
若是在程序結束後,對象沒有被釋放,則成爲內存泄漏