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