Xcode的Instruments工具使用Leaks Allocations Time Profiler Automation

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

http://www.lxweimin.com/p/7cbeb3a85f8a

http://blog.csdn.net/chenyong05314/article/details/8440010

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容