版本記錄
版本號 | 時間 |
---|---|
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(三)
26. INSTRUMENTS調(diào)試工具的使用(二十六) —— 分析你App的內(nèi)存使用之關(guān)于內(nèi)存分析(一)
27. INSTRUMENTS調(diào)試工具的使用(二十七) —— 分析你App的內(nèi)存使用之檢測內(nèi)存使用(二)
28. INSTRUMENTS調(diào)試工具的使用(二十八) —— 分析你App的內(nèi)存使用之找到廢棄的內(nèi)存(三)
Find Memory Leaks - 找到內(nèi)存泄露
Leaks
分析模板使用Allocations and Leaks
工具來測量應(yīng)用程序中的一般內(nèi)存使用情況,并檢查泄漏 - 已分配給不再被引用和可訪問的對象的內(nèi)存防楷。
注意:如果
Instruments
可以訪問關(guān)于您的應(yīng)用程序源代碼的信息牺丙,則會將泄漏報告為類名稱。 否則,將泄漏報告為內(nèi)存地址冲簿,例如Malloc
大小粟判。 要確保Instruments
可以訪問有關(guān)代碼的信息,請從Xcode啟動分析(請參閱Profile from Xcode)或配置符號映射文件(請參閱Map Data to Source Code)峦剔。
To look for memory leaks - 尋找內(nèi)存泄漏
- 1)啟動儀器档礁。
- 2)在出現(xiàn)的性能分析模板選擇對話框中,單擊
Leaks
吝沫。 - 3)從目標(biāo)設(shè)備和進(jìn)程列表中選擇您的設(shè)備和應(yīng)用程序呻澜。
- 4)點擊
Choose
創(chuàng)建一個跟蹤文檔。 - 5)單擊工具欄中的錄制按鈕(或按下
Command-R
)開始錄制惨险。 - 6)正常使用你的應(yīng)用程序
- 7)觀察時間線窗格中的泄漏儀器是否有泄漏羹幸。泄漏顯示為紅色條。
- 8)單擊時間線窗格中的“泄漏”工具以在詳細(xì)信息窗格中顯示與泄漏相關(guān)的信息辫愉。
- 9)從詳細(xì)信息窗格的導(dǎo)航欄中的詳細(xì)類型列表中選擇調(diào)用樹栅受。顯示與任何檢測到的泄漏相關(guān)的方法調(diào)用列表。
- 10)按
Command-2
顯示檢查器窗格的顯示設(shè)置區(qū)域一屋。 - 11)在
Call Tree
顯示設(shè)置下窘疮,選擇Invert Call Tree
和Hide System Libraries
。最先顯示最近的方法調(diào)用冀墨。它還有助于縮小方法調(diào)用列表的范圍闸衫,使其適用于您的應(yīng)用。由您的應(yīng)用進(jìn)行的方法調(diào)用以黑色顯示诽嘉,并以用戶代碼圖標(biāo)開頭蔚出。 - 12)在調(diào)用樹中,選擇要調(diào)查的方法調(diào)用虫腋。
- 13)按下
Command-3
在檢查器的擴(kuò)展詳細(xì)信息區(qū)域中顯示所選方法調(diào)用的堆棧跟蹤骄酗。 - 14)雙擊堆棧跟蹤中的方法調(diào)用以在儀器中顯示其代碼。
- 15)單擊詳細(xì)信息窗格頂部的Xcode按鈕悦冀,以打開Xcode中的代碼進(jìn)行審閱和編輯趋翻。
To investigate a leaked object using a backtrace - 使用回溯來調(diào)查泄漏的對象
- 1)單擊時間線窗格中的
Leaks
工具以在詳細(xì)信息窗格中顯示與泄漏相關(guān)的信息。 - 2)從詳細(xì)信息窗格的導(dǎo)航欄中的詳細(xì)類型列表中選擇
Leaks
盒蟆。顯示通過回溯的泄漏對象列表踏烙。由Backtrace
視圖泄漏的視圖按其分配點匯總所有泄漏塊,因為源代碼中的一個錯誤可能導(dǎo)致多次運行時泄漏历等,因為代碼會重復(fù)執(zhí)行讨惩。 - 3)選擇一個你想調(diào)查的對象。
- 4)單擊對象內(nèi)存地址旁邊的箭頭寒屯,以顯示對象在詳細(xì)信息窗格中的內(nèi)存歷史記錄以及相應(yīng)的引用計數(shù)和方法調(diào)用荐捻。
- 5)按
Command-3
顯示檢查器擴(kuò)展詳細(xì)信息區(qū)域中所選對象的堆棧跟蹤。 - 6)單擊擴(kuò)展詳細(xì)信息區(qū)域中的折疊
Collapse
按鈕以隱藏堆棧跟蹤中的系統(tǒng)調(diào)用。這可以更輕松地找到您的應(yīng)用程序的方法处面。 - 7)雙擊堆棧跟蹤中的方法以在儀器中顯示其代碼厂置。
- 8)單擊詳細(xì)信息窗格頂部的Xcode按鈕,以打開Xcode中的代碼進(jìn)行審閱和編輯魂角。
在您打開Xcode查看正在創(chuàng)建泄漏的代碼后农渊,泄漏的原因可能仍不清楚。 Leaks
工具允許您通過使用細(xì)節(jié)窗格中的Cycles&Roots
選項來查看正在創(chuàng)建泄漏的循環(huán)或颊。
To investigate a leaked object using cycles and roots - 使用cycles and roots來調(diào)查泄漏的對象
- 1)單擊時間線窗格中的
Leaks
工具以在詳細(xì)信息窗格中顯示與泄漏相關(guān)的信息。 - 2)從詳細(xì)信息窗格的導(dǎo)航欄中的詳細(xì)類型列表中選擇
Cycles & Roots
传于。顯示按周期泄漏的對象列表囱挑。 - 3)選擇一個你想調(diào)查的對象。
- 4)如果可用沼溜,請查看該對象的對象圖平挑。
- 5)單擊對象旁邊的箭頭,以顯示詳細(xì)信息窗格中對象的內(nèi)存歷史記錄系草,以及相應(yīng)的引用計數(shù)和方法調(diào)用通熄。
- 6)按
Command-3
顯示檢查器擴(kuò)展詳細(xì)信息區(qū)域中所選對象的堆棧跟蹤。 - 7)單擊擴(kuò)展詳細(xì)信息區(qū)域中的折疊
Collapse
按鈕以隱藏堆棧跟蹤中的系統(tǒng)調(diào)用找都。這可以更輕松地找到您的應(yīng)用程序的方法唇辨。 - 8)雙擊堆棧跟蹤中的方法以在儀器中顯示其代碼。
- 9)單擊詳細(xì)信息窗格頂部的Xcode按鈕能耻,以打開Xcode中的代碼進(jìn)行審閱和編輯赏枚。
小點:對于使用自動引用計數(shù)(ARC)的應(yīng)用程序,泄漏對象的對象圖視圖有助于引用循環(huán)的診斷晓猛。通常饿幅,解決這些問題的方法是在
weak
關(guān)鍵字的對象圖中標(biāo)記向上引用。
To investigate a leak using the call tree - 使用調(diào)用樹調(diào)查泄漏
- 1)單擊時間線窗格中的
Leaks
工具以在詳細(xì)信息窗格中顯示與泄漏相關(guān)的信息戒职。 - 2)從詳細(xì)信息窗格的導(dǎo)航欄中的詳細(xì)類型列表中選擇調(diào)用樹栗恩。顯示與任何檢測到的泄漏相關(guān)的方法調(diào)用列表。
- 3)按
Command-2
顯示檢查器窗格中的顯示設(shè)置區(qū)域洪燥。 - 4)在
Call Tree
顯示設(shè)置下磕秤,選擇Invert Call Tree
和Hide System Libraries
。最先顯示最近的方法調(diào)用蚓曼。它還有助于縮小方法調(diào)用列表的范圍亲澡,使其適用于您的應(yīng)用。由您的應(yīng)用進(jìn)行的方法調(diào)用以黑色顯示纫版,并以用戶代碼圖標(biāo)開頭床绪。 - 5)選擇您想調(diào)查的方法調(diào)用。
- 6)按下
Command-3
在檢查器的擴(kuò)展詳細(xì)信息區(qū)域中顯示所選方法調(diào)用的堆棧跟蹤。 - 7)雙擊堆棧跟蹤中的方法調(diào)用以在儀器中顯示其代碼癞己。
- 8)單擊詳細(xì)信息窗格頂部的Xcode按鈕膀斋,以打開Xcode中的代碼進(jìn)行審閱和編輯。
雖然Instruments可以幫助您檢測內(nèi)存泄漏痹雅,但您仍需仔細(xì)查看相關(guān)的內(nèi)存歷史記錄和代碼仰担,以確定并解決問題。以下情況是泄漏的常見原因:
- 當(dāng)對象不再被引用時绩社,
Retain
被對象調(diào)用摔蓝,而不調(diào)用相應(yīng)的release
。 - 一個對象已被分配并使用不會導(dǎo)致對象自動釋放的API進(jìn)行初始化愉耙。
- 如果泄漏的不是對象贮尉,那么您可能正在調(diào)用一個假定擁有
malloc
創(chuàng)建的內(nèi)存塊的API,并且您缺少對free()
的相應(yīng)調(diào)用朴沿。
后記
本篇主要講述了找到內(nèi)存泄露猜谚,感興趣的給個贊或者關(guān)注~~~