Instruments中常用Template的使用

 Instruments是蘋果提供的Xcode套件,可用於分析iOS,MacOS程序的性能數據,進行性能提升。Instruments提供了很多類型的Template,用於特定場景的分析。這裏選了3種常用的Template進行使用方法的講解,對於其他Template的用法則用到時再瞭解吧,沒必要一次把所有的類型都學習一遍。
講解的Template有:
1.Time Profiler
2.Allocations
3.Leaks
 
Time耗時分析
在時間軸中拖拽兩個begin-end線,分享這2根線之間的方法調用。
 
詳情面板設置
Call Tree設置
通常篩選常見開啓的配置方式:
Separate by Thread:按線程分割
Invert Call Tree:倒置調用棧
Hide System Libraries:隱藏系統庫
其他按需開啓
Separate by State:按狀態分割
Flatten Recursion:平鋪遞歸
Top Fuctions:頂部方法,沒看出有啥作用。
單擊Profile詳情面板中的使用每行符號右側的箭頭,進入到當前方法內的詳細調用和時間佔用。
Heavlest Stack Trace操作
雙擊右側Heavlest Stack Trace下的調用符號,進入到源碼中方法調用的位置。

 

Allocations內存使用分析
 

概念解釋

all-heap-allocations:所有堆內存分配
all-anonymous-VM:所有的虛擬內存分配
堆分配和虛擬內存分配是兩回事
當應用程序啓動時,操作系統爲其分配一塊虛擬內存塊。當應用程序分配內存時,操作系統會從已經預留好的虛擬內存塊中分配內存
應用程序不能控制匿名虛擬內存的大小,但可以通過優化堆分配來減少內存使用。

# Persistent: 當前內存中正在存活的對象個數
# Transient: 在內存中使用完成後,已經被銷燬的對象個數
# Total: 當前存活的+已經銷燬的 總個數
Persistent: 當前內存中正在存活的對象所佔用的內存大小
Total Bytes: 當前存活的+已經銷燬的 對象所使用的內存總大小
Persistent / Total Bytes: 當前存活的與創建對象總數的比值
 
點擊Category 下某個item的右箭頭,可以查看當前類的所有被創建對象的時間和大小

 

Leaks內存泄漏分析
 
紅X表示有內存泄漏,點擊紅X查看內存泄漏。
在Leads詳情面板,選擇Call Tree可以查看方法調用棧。
Call Tree設置
Separate by Thread:按線程分割
Invert Call Tree:倒置調用棧
Hide System Libraries:隱藏系統庫
通過Filter篩選工具篩選當前操作的類名,查看出現內存泄漏的方法,點擊右側箭頭,進入到當前調用方法內詳細查看
雙擊右側Heavlest Stack Trace下的調用符號,進入到源碼中方法調用的位置。



參考文章
https://juejin.cn/post/6865102561507672077
http://www.samirchen.com/use-instruments/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章