內存泄露指一個對象或變量在使用完成后沒有釋放掉草戈,這個對下一直占用這部分內存只祠,知道應用停止。
OC中蝎毡,釋放對象的內存時厚柳,可以發(fā)送release和autorelease消息,release消息馬上將引用計數器減1沐兵,autorelease消息會把對象放入到內存緩存池中别垮,會延遲到內存釋放池周期到后,內存釋放池會將池中所有對象的引用計數器減1.當引用計數器為0時扎谎,對象所占用的內存才被釋放碳想。
一、analyze工具檢查內存泄露:analyze是用來來檢測MRC代碼的內存泄露問題毁靶,通過對代碼的分析胧奔,查找release、retain等消息進行管理的老充。有氧ARC沒有相關的消息,所有無法分析出ARC代碼的內存泄露問題∶螅現在不用MRC了啡浊,所以不做研究。
二胶背、使用Instruments工具檢查內存泄露
Product--->Profile菜單項啟動Instruments工具巷嚣,選擇Leaks,點擊開始分析钳吟,如果右上部分出現紅色的菱形圖標廷粒,說明有內存泄露,右下顯示紅色柱狀圖會顯示泄露的對象,如果是綠色的菱形出現坝茎,說明沒有檢查出內存泄露涤姊,左上選擇leak,選擇Address列后面的箭頭嗤放,會進入詳細界面思喊,可以看到它們的內存地址、占用字節(jié)次酌,所屬框架和響應方法恨课。
點擊右下的E會出來一列StackTrace,里面有人物頭像的條目使我們自己應用的代碼岳服,點擊即可進入程序代碼剂公!ARC中的內存泄露多半由于強引用循環(huán)引起的,點擊Leak選擇Cycles&Roots菜單項吊宋,可以查看引用關系纲辽。
事實上,內存泄露是極其復雜的問題贫母,工具使用是一方面文兑,經驗是另一方面。提高經驗腺劣,然后借助工具才是解決內存泄露的根本绿贞。