打開Instruments:
或者
打開之后會看到如下界面
在這個界面上我們關(guān)注的主要有三個
Time?Profiler:分析代碼的執(zhí)行時間,找出導致程序變慢的原因。要從xcode的product>profile中打開Instruments才能看到自己代碼的運行時間分析Allocations:監(jiān)測內(nèi)存使用?/?分配情況?迅速膨脹的內(nèi)存可以很快讓程序斃命蝶押,所以要多加防范栏渺。Leaks:找到引發(fā)內(nèi)存泄漏的起點當你進入一個UIViewController頁面并返回的時候發(fā)現(xiàn)內(nèi)存一直在增加,那可能會發(fā)生了內(nèi)存泄露衩椒,可以試試看UIViewController的dealloc有沒有運行骂维,如果沒運行可能就是發(fā)生了內(nèi)存泄露惹资。
具體上述三種各個效果作用可以參照博客: https://blog.leancloud.cn/2835/
下面主要說下 Leaks的使用:
這是打開之后選擇自己的手機以及手機上正在運行的項目(1的旁邊)
1、錄控按鈕航闺。中間的紅色按鈕將停止與啟動它被點擊時褪测,應(yīng)用程序目前正在分析。注意這實際上是停止和啟動應(yīng)用程序,而不是暫停它潦刃。
2侮措、行定時器和運行導航,定時器顯示APP已經(jīng)運行了多長時間,箭頭之間是可以移動的。如果停止福铅,然后使用錄制按鈕重新啟動應(yīng)用程序,這將開始一個新的運行项阴。顯示屏便會顯示“run2 of 2”滑黔,你可以回到第一次運行的數(shù)據(jù),首先你停止當前運行环揽,然后按下左箭頭回去略荡。
3、運行軌道
4歉胶、詳細地面板汛兜。它顯示了你正在使用的儀器的主要信息,這是使用頻率最高的部門
5、選項面板
Separate?by?Thread:?每個線程應(yīng)該分開考慮通今。只有這樣你才能揪出那些大量占用CPU的"重"線程??
?Invert?Call?Tree:?從上倒下跟蹤堆棧,這意味著你看到的表中的方法,將已從第0幀開始取樣,這通常你是想要的,只有這樣你才能看到CPU中話費時間最深的方法.也就是說FuncA{FunB{FunC}}?勾選此項后堆棧以C->B-A?把調(diào)用層級最深的C顯示在最外面?
Hide?System?Libraries:?勾選此項你會顯示你app的代碼,這是非常有用的.?因為通常你只關(guān)心cpu花在自己代碼上的時間不是系統(tǒng)上的
Flatten Recursion: 遞歸函數(shù), 每個堆棧跟蹤一個條目
定位紅色柱子的Leaks粥谬,下面有個"田"字方格肛根,點開,選中Call Tree漏策,顯示如下圖界面:
下面就是最關(guān)鍵的一步派哲,在這個界面的右下角有若干選框,選中Invert Call Tree 和Hide System Libraries,(紅圈范圍內(nèi))顯示如下:
然后雙擊小人頭像部分就能定位到咱們的項目代碼中掺喻,如下圖
如果沒有出現(xiàn)小人頭像部分芭届,全是定位到地址符號,(也不要驚慌)這個時候設(shè)置下
選擇第二個就行