iOS 使用Instruments的Leaks工具進行記憶體洩漏分析

weixin_33976072發表於2017-05-16

終於忙完一段時間了,是時候監測一波專案的記憶體洩漏情況了
Xcode ---> Product ---> Profile 開啟Instruments,然後選擇Leaks
Instrument打不開可以參考iOS Instruments打不開解決方法

下圖是我們的專案洩漏情況:

2405290-6d21c0b03a0f56be.png
Snip20170516_1.png

看起來貌似還可以紅叉不是太多,
下邊就是解決這些記憶體洩漏了。

1、選中Leak Checks
2405290-d13b843e749c898f.png
Snip20170516_2.png
2、選中call tree

call tree的官方解釋:Separate By Thread(執行緒分離,只有這樣才能在呼叫路徑中能夠清晰看到佔用CPU最大的執行緒.)

2405290-3fdb34a3d17840f2.png
Snip20170516_4.png

勾上call tree側邊欄的Invert Call Tree 和 Hide System Libraries 兩項選項

2405290-0539adf24ff4193e.png
Snip20170516_5.png

Invert Call Tree 的意思是翻轉呼叫樹,直接定位到記憶體洩漏的那個方法,如果不勾選會顯示最外層的函式,我們還要手動展開。可以點選看下效果
Hide System Libraries 的意思很明顯了。就是隱藏系統類庫,避免一些莫名其妙的,我們無法改動的資訊迷惑我們。

3、洩漏列表

2405290-dae63077217e7a86.png
Snip20170516_6.png

以第三個洩漏為例進行解決
雙擊第三行定位到具體洩漏的函式,洩漏的位元組數都標出來了,如此強大
2405290-85e7492a23d01d73.png
Snip20170516_8.png

哈哈,問題找到了,顯而易見,c語言的方法需要手動釋放記憶體。哪些方法需要釋放記憶體呢?
解決方法如下,
2405290-19f2274d651233f4.png
Snip20170516_10.png

修改程式碼之後洩漏不見了。


2405290-9c5a4da1abe1dbb8.png
Snip20170516_11.png

快去你們的專案裡邊檢視一波吧!

相關文章