MetricKit框架詳細(xì)解析(四) —— Gathering Information About Memory Use(一)

版本記錄

版本號(hào) 時(shí)間
V1.0 2021.05.13 星期四

前言

MetricKit由iOS13系統(tǒng)進(jìn)引入椿浓,用來(lái)匯總和分析有關(guān)異常和崩潰診斷以及電源和性能指標(biāo)的每個(gè)設(shè)備的報(bào)告取胎。下面我們就一起來(lái)看下這個(gè)框架。感興趣的可以看下面幾篇文章匪蟀。
1. MetricKit框架詳細(xì)解析(一) —— 基本概覽(一)
2. MetricKit框架詳細(xì)解析(二) —— Improving Your App's Performance(一)
3. MetricKit框架詳細(xì)解析(三) —— Reducing Your App's Memory Use(一)

Overview

通過(guò)評(píng)估和分析應(yīng)用程序來(lái)確定內(nèi)存使用效率低下的問(wèn)題椎麦。

XcodeInstruments提供了多種工具來(lái)觀察和探索應(yīng)用程序中的內(nèi)存使用情況。


Review the Memory Report

當(dāng)您的應(yīng)用程序在Xcode中運(yùn)行時(shí)材彪,可從XcodeDebug導(dǎo)航器中獲得的內(nèi)存報(bào)告顯示該應(yīng)用程序當(dāng)前的內(nèi)存使用情況以及看到的最大值观挎。 內(nèi)存規(guī)的黃色區(qū)域表示內(nèi)存使用量足夠高,可以觸發(fā)警告段化。 如果該應(yīng)用的內(nèi)存使用量進(jìn)入紅色區(qū)域键兜,則該應(yīng)用有被iOS終止的風(fēng)險(xiǎn)。

注意:如果iOS由于使用過(guò)多內(nèi)存而反復(fù)終止您的應(yīng)用程序穗泵,則可以在模擬器中調(diào)查其行為普气,然后在模擬器中繼續(xù)運(yùn)行。 在模擬器中運(yùn)行應(yīng)用程序時(shí)佃延,內(nèi)存量表始終停留在綠色(安全)區(qū)域现诀,因?yàn)?code>macOS不會(huì)發(fā)出內(nèi)存警告或內(nèi)存不足終止。 此行為在診斷與過(guò)多內(nèi)存使用相關(guān)的問(wèn)題方面具有優(yōu)勢(shì)履肃。 但是請(qǐng)記住仔沿,模擬器中儀表綠色區(qū)域內(nèi)的內(nèi)存使用并不一定意味著您的應(yīng)用程序的內(nèi)存使用處于安全范圍內(nèi)。


Inspect the Debug Memory Graph

您可以通過(guò)在工作區(qū)窗口底部的Xcode調(diào)試區(qū)域中單擊Debug Memory Graph按鈕來(lái)生成應(yīng)用程序中對(duì)象和分配的內(nèi)存圖尺棋。

內(nèi)存圖顯示了您的應(yīng)用程序正在使用的內(nèi)存區(qū)域以及每個(gè)區(qū)域的大小封锉。 圖中的節(jié)點(diǎn)表示對(duì)象,堆分配或內(nèi)存映射文件。 節(jié)點(diǎn)之間的連接(如箭頭所示)顯示了一個(gè)內(nèi)存區(qū)域引用另一個(gè)內(nèi)存區(qū)域的位置成福。

內(nèi)存圖顯示您的應(yīng)用程序在哪里使用內(nèi)存碾局,以及這些使用之間的關(guān)系。您可以使用allocation stack traces來(lái)擴(kuò)充內(nèi)存圖表奴艾,以便每個(gè)區(qū)域都與在分配該區(qū)域的點(diǎn)記錄的調(diào)用堆棧跟蹤相關(guān)聯(lián)净当。

要打開(kāi)分配堆棧跟蹤(allocation stack traces),請(qǐng)?jiān)?code>scheme’s Run設(shè)置的Diagnostics區(qū)域中選中Malloc Stack框蕴潦。啟用分配堆棧跟蹤后像啼,內(nèi)存圖中節(jié)點(diǎn)的檢查器將顯示分配該節(jié)點(diǎn)時(shí)記錄的堆棧跟蹤。使用此信息將內(nèi)存圖中的內(nèi)存分配與應(yīng)用程序源代碼中的函數(shù)和方法相關(guān)聯(lián)潭苞。

要從Xcode導(dǎo)出內(nèi)存圖忽冻,請(qǐng)選擇File > Export Memory Graph。您可以與團(tuán)隊(duì)成員共享導(dǎo)出的內(nèi)存圖此疹,也可以使用命令行工具(包括vmmapleaks)進(jìn)行探索僧诚。有關(guān)命令行工具的更多信息,請(qǐng)參閱WWDC 2018 session 416秀菱,iOS Memory Deep Dive振诬。


Profile Your App Using the Allocations Instrument

Allocations工具跟蹤所有堆和匿名虛擬內(nèi)存(VM)分配的大小和數(shù)量蹭睡,并按類別組織它們衍菱。使用Allocations工具的時(shí)間線來(lái)調(diào)查您的應(yīng)用分配的內(nèi)存總量在您使用應(yīng)用界面時(shí)如何增加和減少。使用統(tǒng)計(jì)信息視圖(statistics view)查看正在進(jìn)行的分配類別肩豁,在每個(gè)類別中進(jìn)行的分配數(shù)量以及這些分配的大小脊串。單擊類別名稱旁邊的箭頭,以查看在該類別中進(jìn)行的各個(gè)分配清钥,以及分配內(nèi)存的時(shí)間和負(fù)責(zé)分配的代碼琼锋。

Allocations工具中的Generations視圖對(duì)于調(diào)查應(yīng)用程序特定功能的內(nèi)存使用情況很有用。啟動(dòng)您的應(yīng)用程序祟昭,并準(zhǔn)備使用正在研究的功能-例如缕坎,導(dǎo)航至具有特定控件的視圖。接下來(lái)篡悟,單擊Allocations工具中的Mark Generation按鈕谜叹。在您的應(yīng)用程序中激活該功能,然后再次單擊Mark Generation搬葬。Instruments按代組織內(nèi)存分配荷腊,在您單擊Mark Generation時(shí)分開(kāi)。您可以隔離使用功能期間發(fā)生的內(nèi)存分配急凰。并非這段時(shí)間內(nèi)記錄的所有分配都與您正在研究的功能相關(guān)聯(lián)女仰,但是generation marks之間未發(fā)生的許多無(wú)關(guān)分配已從考慮中刪除。


See Also

1. Related Documentation

后記

本篇主要講述了Gathering Information About Memory Use,感興趣的給個(gè)贊或者關(guān)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疾忍,一起剝皮案震驚了整個(gè)濱河市乔外,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锭碳,老刑警劉巖袁稽,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異擒抛,居然都是意外死亡推汽,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門歧沪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)歹撒,“玉大人,你說(shuō)我怎么就攤上這事诊胞∨玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵撵孤,是天一觀的道長(zhǎng)迈着。 經(jīng)常有香客問(wèn)我,道長(zhǎng)邪码,這世上最難降的妖魔是什么裕菠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮闭专,結(jié)果婚禮上奴潘,老公的妹妹穿的比我還像新娘。我一直安慰自己影钉,他們只是感情好画髓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著平委,像睡著了一般奈虾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上廉赔,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天肉微,我揣著相機(jī)與錄音,去河邊找鬼昂勉。 笑死浪册,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的岗照。 我是一名探鬼主播闪湾,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼衔掸!你這毒婦竟也來(lái)了症见?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體账忘,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年熙宇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳖擒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烫止,死狀恐怖蒋荚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馆蠕,我是刑警寧澤期升,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站互躬,受9級(jí)特大地震影響播赁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吼渡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一容为、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诞吱,春花似錦舟奠、人聲如沸竭缝。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抬纸。三九已至咙俩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間湿故,已是汗流浹背阿趁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坛猪,地道東北人脖阵。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像墅茉,于是被迫代替她去往敵國(guó)和親命黔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呜呐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容