iOS 內存泄露查找

在做音視頻涉及到多線程就容易引起內存泄露問題。這裏記錄一下內存泄露定位方法。
1. 查看靜態代碼:
打開項目:product ->Analyze 可以看到:
這裏寫圖片描述
這些靜態的引起的問題不嚴重,下面的在多線程中的內存泄露問題比較嚴重,會隨着程序運行內存增加很快。
2.運行過程中造成的內存泄露:
設置xcode:Build Settings->Build Options->Debug Information Format
選擇 :DWARF with dSYM File
然後選擇:Product->Profile
彈出的Choose a profiling template for對話框,選擇Leaks
運行:

這裏寫圖片描述
可以看到,前20秒鐘沒有進行音視頻播放,沒有啓動線程,內存檢測是綠色表示正常,20秒後啓動音視頻播放線程就產生內存泄露了。左下方區域是每次循環分配泄露的內存詳情,右下區域Stack Trace裏面列出了泄露的代碼位置,點擊進來:
這裏寫圖片描述
可以看到直接定位到泄露位置了,包括每次運行泄露的大小。我這裏用的動態庫分配的內存,需要用動態庫進行內存釋放就行了。具體問題具體解決。
比如我這裏用:AVPacket *pkt = av_packet_alloc();
這個方法分配內存,則要用:av_packet_unref(pkt);進行釋放。
這種方式查找內存泄露也不是萬能的,有時候也會定位不準確,這種方式只能作爲一種輔助查找方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章