Instruments中常用Template的使用

2023-06-19 18:00:27
 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/