最近公司寫(xiě)的項(xiàng)目中遇到了內(nèi)存泄漏的問(wèn)題洽糟,一直對(duì)instruments的使用很不熟練扁瓢,借此機(jī)會(huì)記錄一下使用經(jīng)驗(yàn)详恼。
ARC之前,instruments是神器涤妒,ARC之后单雾,它依然是神器。
內(nèi)存泄漏是個(gè)很嚴(yán)重的問(wèn)題她紫,下面是使用xcode中instruments工具的過(guò)程:
-
打開(kāi)instruments
122EE96D-926B-4894-AD39-8A60F4383069.png
或者
7E2606CD-8A95-4DB1-8377-4372ED5121B7.png
按上面操作硅堆,build成功后跳出Instruments工具,選擇Leaks選項(xiàng)贿讹。
9022801D-D55D-4164-B31D-BA6D6088DF54.png
打開(kāi)此工具后渐逃,就可以開(kāi)始測(cè)試了。
-
打開(kāi)instruments后點(diǎn)擊左上角開(kāi)始按鈕
007D299D-BC1C-4D15-9CCB-A2909D8CE3A1.png
再在模擬器中或者真機(jī)中來(lái)操作APP以便發(fā)現(xiàn)問(wèn)題民褂,如果發(fā)現(xiàn)如圖紅色的叉號(hào)時(shí)茄菊,表示檢測(cè)到了內(nèi)存泄漏,此時(shí)可以點(diǎn)擊左上角暫停按鈕或者發(fā)現(xiàn)多個(gè)紅叉之后再點(diǎn)擊暫停赊堪,視情況而定面殖。
-
下面就可以定位代碼了,具體步驟為:
819024-20151009093833143-1343849154.png
選中l(wèi)eak checks哭廉,然后選擇call tree脊僚,選中后再在下圖所示中進(jìn)行配置:
819024-20151009094249174-5472541.png
然后再選擇自己認(rèn)為可能的代碼泄露的地方,點(diǎn)進(jìn)去看下代碼:
當(dāng)然遵绰,這種方法可以找到大部分的內(nèi)存泄漏問(wèn)題辽幌,然而有一些內(nèi)存泄漏還是看不出來(lái)的增淹。
還有一個(gè)部分Circles & Roots,這里可以看到引用計(jì)數(shù)的詳細(xì)信息乌企,看這里也有利于找到一些問(wèn)題:
寫(xiě)到這里虑润,就差不多記錄了一下instruments中的Leaks的簡(jiǎn)單使用,不過(guò)可惜的是加酵,這個(gè)工具并沒(méi)有為我找到內(nèi)存泄漏的代碼在何處拳喻,經(jīng)過(guò)檢查是因?yàn)槟硟蓚€(gè)類的代理相互引用造成的。
更高深的東西我也不知道了虽画,就不在這里搬運(yùn)了舞蔽,想看的在這里:iOS-Main -關(guān)于Instruments-Leaks工具的歸納總結(jié)