Instruments的主要功能有以下幾種:
Time Profiler:性能分析
Zombies:檢查是否訪問了僵尸對象,但是這個工具只能從上往下檢查,不智能
Allocations:用來檢查內存,寫算法的那批人也用這個來檢查
Leaks:檢查內存,看是否有內存泄露
一、Leaks: 內存泄露檢測工具
1、靜態檢測內存泄露Analyze
點擊后顯示如圖,然后點擊上面的
a、點擊1查看左測,進行定位
b、點擊2進行準確定位
c、查看錯誤泄露原因
2、動態監測 Instruments的Leaks
選擇工具,點擊圖中的Profile或快捷鍵:
command+i
彈出Instruments工具箱,選擇Leaks
顯示如圖,并按下鍵盤:command+R 運行app,此時手動操作app查看內存泄露
當操作app過程中,發現有紅的小叉,就說明有內存泄露,接下來的目的就是找到泄露位置并修復
a、點擊1處按鈕,暫停檢測,
b、點擊2轉到leaks下(此步驟感覺可有可無)
c、將鼠標放到3處可查看泄露個數
d、將1的選框選為Call Tree
e、將右側2的選擇調至中間
f、對Call Tree進行限制,將3打上勾
g、看4如果后面有箭頭則展開,直到出現類似5的(后面沒箭頭),然后雙擊5,它就會跳到內存泄露處,修復即可
二、 Time Profiler: 分析代碼的執行時間,找出導致程序變慢的原因
a、調出Instruments工具操作同Leaks,不做復述,然后選擇 Time Profiler,彈出界面,然后使用快捷鍵command+R,啟動 Time Profiler 和 app,并操作app,查看執行時間
雖然代碼沒什么可優化的地方,但大家應該認識到緩存能發揮的作用。對于經常訪問的頁面,多數情況下把圖片緩存下來,還是能省些資源占用。
Separate by Thread:按線程分開做分析,這樣更容易揪出那些吃資源的問題線程。特別是對于主線程,它要處理和渲染所有的接口數據,一旦受到阻塞,程序必然卡頓或停止響應。
Invert Call Tree:反向輸出調用樹。把調用層級最深的方法顯示在最上面,更容易找到最耗時的操作。
Hide System Libraries:隱藏系統庫文件。過濾掉各種系統調用,只顯示自己的代碼調用。
Flattern Recursion:拼合遞歸。將同一遞歸函數產生的多條堆棧(因為遞歸函數會調用自己)合并為一條。
Top Functions:找到最耗時的函數或方法。
b、個人感覺選兩個就夠啦,有選前四個的,可能更全面,有需要的自己打上勾就ok拉
c、選擇其中一個雙擊,就會跳轉到對應的代碼頁,如圖
三、 Allocations:監測內存使用/分配情況
a、調出Instruments工具操作同Leaks,不做復述,然后選擇 Allocations,彈出界面,然后使用快捷鍵command+R,啟動 Allocations 和 app,并操作app,查看某個方法所占用的內存,然后雙擊進入詳情,這里不做復述
四、 Automation:自動化測試,類似于Android的Monkey
a、調出Instruments工具操作同Leaks,不做復述,然后選擇 Automation,彈出界面
如圖所標:
1為腳本區,2為控制區
b、此時應該先錄制操作腳本,點擊2,同時它會自動為你運行app,你只需要打開你的模擬器,然后操作app,腳本會自動記錄下你的操作步驟,
c、進行相關設置,設置好以后點擊左上角開始運行腳本
d、查看操作,說明如下
1處是腳本運行和開關
2處可以查看運行狀態,雙擊可在腳本與記錄之間切換,如果操作出錯,此處會變黃,雙擊即可找到錯誤操作處
3處為操作日志或記錄
參考原文:http://www.cnblogs.com/iOSv587country/p/4862989.html