版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2021.05.12 星期三 |
前言
MetricKit
由iOS13系統(tǒng)進(jìn)引入,用來匯總和分析有關(guān)異常和崩潰診斷以及電源和性能指標(biāo)的每個(gè)設(shè)備的報(bào)告表牢。下面我們就一起來看下這個(gè)框架塞弊。感興趣的可以看下面幾篇文章。
1. MetricKit框架詳細(xì)解析(一) —— 基本概覽(一)
2. MetricKit框架詳細(xì)解析(二) —— Improving Your App's Performance(一)
Overview
通過分析內(nèi)存使用指標(biāo)并進(jìn)行更改以最大程度地提高內(nèi)存效率倍阐,從而提高您應(yīng)用的性能燥狰。
設(shè)備上的內(nèi)存(RAM)
是由應(yīng)用程序,操作系統(tǒng)進(jìn)程和內(nèi)核共享的有限資源。 iOS具有滿足各種內(nèi)存需求的技術(shù)裆熙,但是這些技術(shù)是以速度和響應(yīng)速度為代價(jià)的。例如禽笑,當(dāng)應(yīng)用程序在后臺(tái)運(yùn)行時(shí)入录,iOS可能會(huì)將內(nèi)存密集型應(yīng)用程序轉(zhuǎn)移到固態(tài)存儲(chǔ)中。然后佳镜,當(dāng)返回到前臺(tái)或嘗試運(yùn)行后臺(tái)任務(wù)時(shí)僚稿,該應(yīng)用程序會(huì)導(dǎo)致延遲。
如果應(yīng)用程序占用的內(nèi)存過多蟀伸,iOS會(huì)向其發(fā)送警告蚀同。您會(huì)以崩潰報(bào)告的形式收到有關(guān)此類警告的通知。該報(bào)告具有EXC_RESOURCE
異常類型和MEMORY
子類型啊掏,表明該應(yīng)用程序已接近其內(nèi)存限制蠢络。這并不意味著iOS已經(jīng)終止了該應(yīng)用程序,僅表示它已檢測到內(nèi)存使用問題迟蜜。觸發(fā)異常的內(nèi)存限制取決于設(shè)備刹孔,一旦應(yīng)用程序超出此限制,iOS就會(huì)終止該限制娜睛。如果該應(yīng)用在前臺(tái)中終止髓霞,則用戶會(huì)看到它消失。下次用戶打開該應(yīng)用程序時(shí)微姊,它將從頭開始啟動(dòng)酸茴,所需時(shí)間比從后臺(tái)恢復(fù)所需的時(shí)間更長分预。
由于設(shè)備在應(yīng)用程序和iOS進(jìn)程之間共享內(nèi)存兢交,因此一個(gè)應(yīng)用程序使用過多的內(nèi)存可能會(huì)損害整個(gè)設(shè)備的用戶體驗(yàn)。限制應(yīng)用程序使用的內(nèi)存量可以使用戶受益笼痹,即使他們正在使用其他應(yīng)用程序也是如此配喳。
Understand Memory-Use Metrics
Xcode Organizer
和MetricKit
分別提供了兩個(gè)有關(guān)應(yīng)用程序內(nèi)存使用情況的指標(biāo)酪穿。第一個(gè)指標(biāo)是峰值內(nèi)存使用量(peak memory use)
,這是在任何采樣中觀察到的最高內(nèi)存使用量晴裹。 iOS通過全天定期采樣應(yīng)用程序的內(nèi)存使用量來收集此指標(biāo)被济。第二個(gè)指標(biāo)是在暫停狀態(tài)下觀察到的內(nèi)存使用情況,是在應(yīng)用進(jìn)入后臺(tái)時(shí)測量的涧团。
iOS將內(nèi)存使用量衡量為使用中的內(nèi)存頁數(shù)乘以頁面大兄涣住(通常為16 KB
)。如果iOS必須分配一個(gè)新頁來存儲(chǔ)該字節(jié)泌绣,則將一個(gè)字節(jié)寫入分配的內(nèi)存可以將內(nèi)存使用量增加16 KB
钮追。
應(yīng)用程序的可執(zhí)行文件或鏈接的庫和框架中定義的數(shù)據(jù)結(jié)構(gòu)有助于內(nèi)存使用指標(biāo)。 應(yīng)用在runtime
分配的內(nèi)存最初并不會(huì)影響該指標(biāo)阿迈。 這樣的內(nèi)存是“干凈的”元媚,iOS不需要專用的物理RAM
來存儲(chǔ)它。 當(dāng)應(yīng)用程序?qū)懭敕峙涞膬?nèi)存時(shí)苗沧,它將變?yōu)?code>“ dirty”刊棕,并且iOS專用于RAM
來存儲(chǔ)其內(nèi)容,如下圖所示待逞。 Dirty memory
貢獻(xiàn)了內(nèi)存使用的指標(biāo)甥角。
View Data on Memory Use
在Xcode Organizer
窗口的Memory
窗格中或使用MetricKit查看應(yīng)用程序的內(nèi)存使用情況。
Memory
窗格在頂部圖形中顯示有關(guān)峰值內(nèi)存的信息识樱,在底部圖形中顯示處于暫停狀態(tài)的內(nèi)存的信息蜈膨。 使用右上角的兩個(gè)菜單,按設(shè)備類型和使用的典型內(nèi)存(第50個(gè)百分位數(shù))或使用的頂部內(nèi)存(第90個(gè)百分位數(shù))過濾信息牺荠,以查找可能的問題區(qū)域翁巍。 通過單擊圖表中所需的release
版上的欄,將當(dāng)前release
版與先前release
版的內(nèi)存使用情況進(jìn)行比較休雌。
Topics
1. Tasks
- Gathering Information About Memory Use
- Making Changes to Reduce Memory Use
- Preventing Memory-Use Regressions
- Responding to Low-Memory Warnings
See Also
1. Related Documentation
后記
本篇主要講述了
Reducing Your App's Memory Use
灶壶,感興趣的給個(gè)贊或者關(guān)注~~~