INSTRUMENTS調(diào)試工具的使用(二十八) —— 分析你App的內(nèi)存使用之找到廢棄的內(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(三)
26. INSTRUMENTS調(diào)試工具的使用(二十六) —— 分析你App的內(nèi)存使用之關(guān)于內(nèi)存分析(一)
27. INSTRUMENTS調(diào)試工具的使用(二十七) —— 分析你App的內(nèi)存使用之檢測內(nèi)存使用(二)

Find Abandoned Memory - 找到廢棄的內(nèi)存

Allocations分析模板使??用AllocationsVM Tracker工具來測量應(yīng)用程序中的一般和虛擬內(nèi)存使用情況。但是,為了追蹤已分配但不再需要的廢棄內(nèi)存,請嚴(yán)格關(guān)注Allocations工具。該儀器測量堆內(nèi)存使用情況并跟蹤分配,包括按類分配的特定對象。

由于廢棄的內(nèi)存仍然是您的應(yīng)用程序引用的,因此Instruments無法確定其重要性。要找到廢棄的內(nèi)存,請使用generational分析來確保內(nèi)存在繼續(xù)增長的同時反復(fù)執(zhí)行相同的操作。例如,結(jié)束和開始新游戲,打開和關(guān)閉窗口,創(chuàng)建和刪除聯(lián)系人,或者設(shè)置和取消設(shè)置首選項(xiàng)都是應(yīng)該從理論上將您的應(yīng)用程序恢復(fù)到以前的穩(wěn)定內(nèi)存狀態(tài)的操作。通過這種操作進(jìn)行多次循環(huán)不應(yīng)導(dǎo)致意外或不受限制的內(nèi)存增長。Instruments可幫助您將內(nèi)存增長時間與特定對象分配關(guān)聯(lián)起來,因此您可以釋放它們并減少應(yīng)用程序的內(nèi)存占用量。

To look for abandoned memory in your app - 在您的應(yīng)用中尋找遺棄的內(nèi)存

  • 1)啟動儀器。
  • 2)在出現(xiàn)的分析模板選擇對話框中,單擊Allocations
  • 3)從目標(biāo)設(shè)備和進(jìn)程列表中選擇您的設(shè)備和應(yīng)用程序。
  • 4)點(diǎn)擊Choose創(chuàng)建一個跟蹤文檔。
  • 5)單擊時間軸窗格中的Allocations工具。
  • 6)按Command-2顯示檢查器窗格的顯示設(shè)置區(qū)域。這使您可以快速訪問Mark Generation按鈕,您可以在分析應(yīng)用程序時標(biāo)記不同代的操作。
  • 7)單擊工具欄中的錄制按鈕(或按下Command-R)開始錄制。
  • 8)在您的應(yīng)用中執(zhí)行一系列可重復(fù)操作。為了準(zhǔn)確地生成趨勢,這應(yīng)該是一組以同一狀態(tài)下的應(yīng)用程序開始和結(jié)束的操作。
  • 9)單擊檢查器窗格中的Mark Generation按鈕。軌跡窗格中會出現(xiàn)一個標(biāo)志來標(biāo)識這一代。詳細(xì)信息窗格中顯示您標(biāo)記的generations列表。每一代都包括自上一代以來發(fā)生的分配清單。通過將跟蹤窗格的時間線中的檢查頭拖到所需的位置并單擊標(biāo)記生成,您也可以在記錄完成后標(biāo)記generations
  • 10)在監(jiān)視詳細(xì)信息窗格的同時,多次執(zhí)行步驟8和9,直到您看到內(nèi)存是否正在無限增長。

重要:在前幾次迭代中,由于緩存可能會發(fā)生額外的allocations。 因此,為了建立一個基線,創(chuàng)建前幾代是非常重要的。 然后,為真正的分析創(chuàng)造更多的generations

  • 11)當(dāng)您準(zhǔn)備停止錄制時,單擊工具欄中的停止按鈕(或再次按下Command-R)。
  • 12)瀏覽細(xì)節(jié)窗格中的generations,找到一個似乎代表重復(fù)內(nèi)存增長的代表。Growth#Persistent列告訴你自上一代以來有多少額外內(nèi)存和多少次分配。如果您的應(yīng)用程序在執(zhí)行操作后恢復(fù)到原始狀態(tài),則不應(yīng)指望每代都會有增長。
  • 13)單擊一代的顯示三角形以顯示自上一代以來已分配的新對象。
  • 14)尋找持久的對象。如果您確定其中的一個,請單擊顯示三角形以顯示其實(shí)例。
  • 15)選擇一個對象實(shí)例。
  • 16)按下Command-3在檢查器的擴(kuò)展詳細(xì)信息區(qū)域中顯示所選實(shí)例的堆棧跟蹤。該堆棧跟蹤提供負(fù)責(zé)分配實(shí)例的方法調(diào)用的完整列表。
  • 17)單擊擴(kuò)展詳細(xì)信息區(qū)域中的折疊Collapse按鈕以隱藏堆棧跟蹤中的系統(tǒng)調(diào)用。這可以更輕松地找到您的應(yīng)用程序的方法。由您的應(yīng)用進(jìn)行的調(diào)用會以黑色標(biāo)志,并以用戶代碼圖標(biāo)開頭。
  • 18)雙擊堆棧跟蹤中的方法以在儀器中顯示其代碼。
  • 19)單擊詳細(xì)信息窗格頂部的Xcode按鈕以打開Xcode中的代碼進(jìn)行編輯。
  • 20)確定分配是否有用。如果不是這樣,它就廢棄了需要解決的內(nèi)存。

后記

本篇主要講述了找到廢棄的內(nèi)存,感興趣的給個贊或者關(guān)注~~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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