INSTRUMENTS調(diào)試工具的使用(二十六) —— 分析你App的內(nèi)存使用之關(guān)于內(nèi)存分析(一)

版本記錄

版本號 時間
V1.0 2018.06.15

前言

我們在做app的時候躲撰,不是做完功能就結(jié)束了桑逝,很多時候是需要進(jìn)行檢查和優(yōu)化的蜒谤,而xcode自帶了一個很好的檢查工具山宾,可以檢測內(nèi)存泄漏。還可以查看哪一個方法比較耗時鳍徽。還可以檢測離屏渲染等等资锰,隨后的幾篇我們就說一下這個工具的使用。感興趣的可以看這幾篇阶祭。
1.INSTRUMENTS調(diào)試工具的使用(一)
2.INSTRUMENTS調(diào)試工具的使用(二)
3.INSTRUMENTS調(diào)試工具的使用(三)
4.INSTRUMENTS調(diào)試工具的使用(四)
5.INSTRUMENTS調(diào)試工具的使用(五)
6.INSTRUMENTS調(diào)試工具的使用(六)
7.INSTRUMENTS調(diào)試工具的使用(七)
8.INSTRUMENTS調(diào)試工具的使用(八)
9.INSTRUMENTS調(diào)試工具的使用(九)
10. INSTRUMENTS調(diào)試工具的使用(十)
11. INSTRUMENTS調(diào)試工具的使用(十一) —— 簡介(一)
12. INSTRUMENTS調(diào)試工具的使用(十二) —— 通常任務(wù)之啟動Instruments(一)
13. INSTRUMENTS調(diào)試工具的使用(十三) —— 通常任務(wù)之簡單了解Instruments(二)
14. INSTRUMENTS調(diào)試工具的使用(十四) —— 通常任務(wù)之創(chuàng)建绷杜、保存和打開跟蹤文檔(三)
15. INSTRUMENTS調(diào)試工具的使用(十五) —— 通常任務(wù)之指定目標(biāo)應(yīng)用和設(shè)備(四)
16. INSTRUMENTS調(diào)試工具的使用(十六) —— 通常任務(wù)之訪問和使用個別儀器(五)
17. INSTRUMENTS調(diào)試工具的使用(十七) —— 通常任務(wù)之記錄、暫停和停止跟蹤(六)
18. INSTRUMENTS調(diào)試工具的使用(十八) —— 導(dǎo)航收集的數(shù)據(jù)之關(guān)于數(shù)據(jù)分析(一)
19. INSTRUMENTS調(diào)試工具的使用(十九) —— 導(dǎo)航收集的數(shù)據(jù)之導(dǎo)航時間軸窗格(二)
20. INSTRUMENTS調(diào)試工具的使用(二十) —— 導(dǎo)航收集的數(shù)據(jù)之導(dǎo)航詳細(xì)面板(三)
21. INSTRUMENTS調(diào)試工具的使用(二十一) —— 導(dǎo)航收集的數(shù)據(jù)之將數(shù)據(jù)映射到源代碼(四)
22. INSTRUMENTS調(diào)試工具的使用(二十二) —— 導(dǎo)航收集的數(shù)據(jù)之查看您應(yīng)用的源代碼(五)
23. INSTRUMENTS調(diào)試工具的使用(二十三) —— 分析你App的性能之測量CPU使用情況(一)
24. INSTRUMENTS調(diào)試工具的使用(二十四) —— 分析你App的性能之測量圖形性能(二)
25. INSTRUMENTS調(diào)試工具的使用(二十五) —— 分析你App的性能之監(jiān)視網(wǎng)絡(luò)和文件I / O(三)

About Memory Analysis - 關(guān)于內(nèi)存分析

每當(dāng)你的應(yīng)用程序創(chuàng)建對象時濒募,都會為它們分配內(nèi)存接剩。傳統(tǒng)上,應(yīng)用程序的工作是跟蹤這些對象并在不再需要時釋放它們萨咳,以便為其他對象重新分配內(nèi)存懊缺。自動引用計數(shù)(ARC)功能可以讓系統(tǒng)負(fù)責(zé)內(nèi)存管理,從而使事情更輕松培他。啟用ARC后鹃两,系統(tǒng)會處理監(jiān)視對象分配并在適當(dāng)?shù)臅r候釋放它們,從而使您的應(yīng)用程序無需執(zhí)行任何操作舀凛。不管內(nèi)存如何管理俊扳,但即使是最好的應(yīng)用程序設(shè)計也會偶爾遇到難以隔離的內(nèi)存問題。

Instruments可以幫助您繪制應(yīng)用程序如何使用內(nèi)存的圖片猛遍,從而更容易識別潛在的問題區(qū)域馋记。它甚至可以自動檢測某些類型的內(nèi)存問題并將它們標(biāo)記為供您分析号坡。使用儀器來觀察和追蹤以下內(nèi)容:

  • Overall Memory Use - 整體內(nèi)存使用。高級別監(jiān)控應(yīng)用程序如何使用內(nèi)存梯醒,并將其與系統(tǒng)上其他活動進(jìn)程的內(nèi)存使用情況進(jìn)行比較宽堆。尋找大量或意想不到的內(nèi)存增長區(qū)域。請參閱Monitor Memory Usage茸习。

  • Leaked Memory - 泄漏的內(nèi)存畜隶。這是在某些時候分配的內(nèi)存,但從未發(fā)布号胚,不再被您的應(yīng)用程序引用籽慢。由于沒有對它的引用,現(xiàn)在無法釋放它猫胁,并且內(nèi)存不能再次使用箱亿。例如,假設(shè)您已經(jīng)編寫了一個在圖形中創(chuàng)建矩形對象的應(yīng)用程序弃秆,但在結(jié)束繪制時從未釋放對象极景。在這種情況下,只要包含矩形的繪制關(guān)閉驾茴,您的應(yīng)用程序就會泄漏越來越多的內(nèi)存。要解決泄漏問題氢卡,您需要確定哪些對象未被釋放锈至,然后更新您的應(yīng)用程序以在適當(dāng)?shù)臅r間釋放它。請參閱查找Find Memory Leaks译秦。

  • Abandoned Memory - 被廢棄的內(nèi)存峡捡。這是你的應(yīng)用程序由于某種原因分配的內(nèi)存,但它不是必需的筑悴,不會被引用们拙。例如,假設(shè)您的應(yīng)用程序在緩存完成后將圖像添加到緩存中 - 對同一圖像使用兩倍的內(nèi)存阁吝⊙馄牛或者,也許你的應(yīng)用程序維護(hù)一個對象數(shù)組突勇,以備日后需要訪問它們装盯,但你從來沒有真正做過。與泄漏的內(nèi)存不同甲馋,像這樣廢棄的內(nèi)存仍然在您的應(yīng)用中引用埂奈。它只是沒有用處。由于它在技術(shù)上仍然有效定躏,因此Instruments識別出來更加困難账磺,需要更多的偵探工作芹敌。請參閱Find Abandoned Memory

  • Zombies - 僵尸垮抗。這是已經(jīng)釋放并且不再需要的內(nèi)存氏捞,但是你的代碼仍然在某處引用它。例如借宵,假設(shè)您的應(yīng)用程序包含圖像緩存幌衣。緩存清除后,您的應(yīng)用程序不應(yīng)嘗試引用之前包含的圖像壤玫。調(diào)用這些不存在的圖像被認(rèn)為是僵尸 - 對不再存在的對象的引用豁护。請參閱Find Zombies

由于內(nèi)存問題難以找到欲间,因此在不同階段定期拍攝應(yīng)用程序快照會很有幫助楚里,以便查找意外或不受限制的內(nèi)存增長。您可以比較快照以確定如何分配和銷毀對象猎贴,以及隨著時間的推移如何使用內(nèi)存班缎。

通過持續(xù)執(zhí)行一組可重復(fù)的用戶操作來測試您的應(yīng)用程序也很重要,這些操作會導(dǎo)致您的應(yīng)用程序進(jìn)入新狀態(tài)并在完成后返回其原始狀態(tài)她渴。這種類型的研究被稱為generational analysis达址。每次您的應(yīng)用程序進(jìn)入新狀態(tài)時,都會創(chuàng)建一代“對象”趁耗。在大多數(shù)情況下沉唠,當(dāng)應(yīng)用程序返回到原始狀態(tài)時,您應(yīng)該期望這些對象被釋放苛败。例如满葛,如果你的應(yīng)用程序打開一個窗口,那么當(dāng)窗口關(guān)閉時罢屈,任何窗口對象都應(yīng)該被釋放嘀韧。如果他們不是,那么你可能有內(nèi)存問題缠捌。執(zhí)行代分析時锄贷,由于緩存和其他初始化過程,初始代可能會顯示比預(yù)期更大的內(nèi)存使用量曼月。因此肃叶,請多次重復(fù)用戶操作,以獲得對應(yīng)用行為的真實感受十嘿。

注意:有關(guān)管理內(nèi)存的深入信息因惭,請參閱Advanced Memory Management Programming Guide

后記

本篇主要講述了關(guān)于內(nèi)存分析绩衷,感興趣的給個贊或者關(guān)注~~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹦魔,一起剝皮案震驚了整個濱河市激率,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勿决,老刑警劉巖乒躺,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異低缩,居然都是意外死亡嘉冒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門咆繁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讳推,“玉大人,你說我怎么就攤上這事玩般∫伲” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵坏为,是天一觀的道長究驴。 經(jīng)常有香客問我,道長匀伏,這世上最難降的妖魔是什么洒忧? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮够颠,結(jié)果婚禮上熙侍,老公的妹妹穿的比我還像新娘。我一直安慰自己摧找,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布牢硅。 她就那樣靜靜地躺著蹬耘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪减余。 梳的紋絲不亂的頭發(fā)上综苔,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音位岔,去河邊找鬼如筛。 笑死,一個胖子當(dāng)著我的面吹牛抒抬,可吹牛的內(nèi)容都是我干的杨刨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼擦剑,長吁一口氣:“原來是場噩夢啊……” “哼妖胀!你這毒婦竟也來了芥颈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赚抡,失蹤者是張志新(化名)和其女友劉穎爬坑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涂臣,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡盾计,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了赁遗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片署辉。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吼和,靈堂內(nèi)的尸體忽然破棺而出涨薪,到底是詐尸還是另有隱情,我是刑警寧澤炫乓,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布刚夺,位于F島的核電站,受9級特大地震影響末捣,放射性物質(zhì)發(fā)生泄漏侠姑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一箩做、第九天 我趴在偏房一處隱蔽的房頂上張望莽红。 院中可真熱鬧,春花似錦邦邦、人聲如沸安吁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鬼店。三九已至,卻和暖如春黔龟,著一層夾襖步出監(jiān)牢的瞬間妇智,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工氏身, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巍棱,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓蛋欣,卻偏偏與公主長得像航徙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陷虎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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