項目開發(fā)工作已經(jīng)完成遥诉,進(jìn)行測試的時候须床,發(fā)現(xiàn)有內(nèi)存泄漏問題铐料,以下為個人總結(jié),有不足的地方或者更好的處理方式還請指點豺旬!
具體過程如下:
1钠惩、用Xcode打開項目,使用快捷鍵 Command+I 打開instruments工具(也可以在通過Product -> Profile 方式來打開)哈垢,然后會有如下圖窗口彈出:
2妻柒、選擇Leaks扛拨,點擊Choose耘分,顯示如下界面:
3、點擊左上角的紅色圓點绑警,這時項目開始啟動了求泰,由于leaks是動態(tài)監(jiān)測,所以手動進(jìn)行一系列操作计盒,可檢查項目中是否存在內(nèi)存泄漏問題:
如圖所示渴频,橙色矩形框中所示綠色為正常,如果出現(xiàn)如右側(cè)紅色矩形框中顯示紅色北启,則表示出現(xiàn)內(nèi)存泄漏卜朗。
4、那怎么定位到出現(xiàn)內(nèi)存泄漏的代碼呢
選中Leaks Checks,在Details所在欄中選擇CallTree,并且在右下角勾選Invert Call Tree 和Hide System Libraries咕村,會發(fā)現(xiàn)顯示若干行代碼场钉,雙擊即可跳轉(zhuǎn)到出現(xiàn)內(nèi)存泄漏的地方,修改即可懈涛。
5逛万、問題解決:
上圖為內(nèi)存泄漏的代碼,問題是:
CGMutablePathRef mutablePath = CGPathCreateMutable();
此變量沒有手動釋放而導(dǎo)致的批钠,在代碼片段中此變量使用結(jié)束之后宇植,CGPathRelease(mutablePath);添加此句代碼即可解決
提醒:
如CGPathCreateMutable(); 中含有create的語句創(chuàng)建的變量,需要手動釋放內(nèi)存
知識補充:
1埋心、內(nèi)存溢出 out of memory指郁,是指程序在申請內(nèi)存時,沒有足夠的內(nèi)存空間供其使用拷呆,出現(xiàn)out of memory闲坎;比如申請了一個integer,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出。
內(nèi)存泄露 memory leak箫柳,是指程序在申請內(nèi)存后手形,無法釋放已申請的內(nèi)存空間,一次內(nèi)存泄露危害可以忽略悯恍,但內(nèi)存泄露堆積后果很嚴(yán)重库糠,無論多少內(nèi)存,遲早會被占光。