原文地址:http://blog.csdn.net/u010070526/article/details/47442581?
分析內存泄露
最近用到內存泄露,查看以前的博客,方法不錯,但操作時,步驟好多都找不到啦,不知道怎么操作。所以下面做了一個簡單的例子
實驗的開發環境:XCode 6.4
一、Analyze(shift+command+b)
app不crash了,那看看有沒有內存泄露。用XCode的Analyze就能分析到哪里有內存泄露
分析之后可以看到:
這里提示alertView沒被釋放,有內存泄露,那我們釋放
[alertViewrelease];
再分析,這個問題解決了。
二、使用Instruments的leaks工具(command + control + i)
分析內存泄露不能把所有的內存泄露查出來,有的內存泄露是在運行時,用戶操作時才產生的。那就需要用到Instruments了。
或者
選擇第一個 Instruments
按上面操作,build成功后跳出Instruments工具,選擇Leaks選項,
顯示界面如圖,然后選擇Leaks
選擇后界面如圖
好到這里準備工作就算做完啦,開始正式的測試
關鍵的幾步
1、首先我們選中Xcode先把模擬器(command + R)運行起來
2、然后我們再選中Xcode,按快捷鍵(command + control + i)運行起來,
此時Leaks已經跑起來了,我們可以狠明顯的看到,
3、由于Leaks是動態監測,所以我們需要手動操作APP,進行測試,一邊操作APP,一邊觀察Leaks的變化,
當出現紅色柱子時,恭喜你監測到了內存泄露,點擊右上角的第二個,進行暫停檢測(也可繼續檢測,當多個時暫停,一次處理了多個),
下面就是定位修改了
4、此時選中有紅色柱子的Leaks,下面有個"田"字方格,點開,選中Call Tree
顯示界面如圖
5、下面就是最關鍵的一步,在這個界面的右下角有若干選框,選中Invert Call Tree 和Hide System Libraries,(紅圈范圍內)顯示如下:
到這里就算基本完成啦,這里顯示的兩個,就是內存泄露代碼部分,還差一步:定位
6、選中顯示的若干條中的一天,雙擊,會自動跳到內存泄露代碼處,如圖
7、既然找到了內存泄露出,修改即可
測試的demo下載:
http://download.csdn.net/detail/u010070526/8995765