INSTRUMENTS調試工具的使用(四)

版本記錄

版本號 時間
V1.0 2017.06.22

前言

我們在做app的時候,不是做完功能就結束了,很多時候是需要進行檢查和優化的,而xcode自帶了一個很好的檢查工具,可以檢測內存泄漏。還可以查看哪一個方法比較耗時。還可以檢測離屏渲染等等,隨后的幾篇我們就說一下這個工具的使用。感興趣的可以看這幾篇。
1.INSTRUMENTS調試工具的使用(一)
2.INSTRUMENTS調試工具的使用(二)
3.INSTRUMENTS調試工具的使用(三)
這一篇就先說一下查看數據的工具以及內存分配

八、查看數據工具

前面我們已經說過,每個跟蹤文檔都包含了以下接口元素:

  • 跟蹤面板(Track pane)
  • 詳細面板(Detail pane)
  • 擴展詳細面板(Extended Detail pane)
  • 運行瀏覽器(Run Browser)

這里的每個控件顯示的都是你跟蹤文檔里面相同的數據。它們只是以不同的方式 顯示而已,關于每個數據點從高級的預覽到詳細的信息等。這樣可以讓你以不同的方 式來查看你的數據。你可以通過查看高級的數據來分析變化趨勢,然后查看詳細的數 據來確定在你的代碼中將要發生的事情和制定關于如何解決潛在問題的思路。

1. 跟蹤面板

跟蹤面板是跟蹤文檔窗口里面最突出的部分。跟蹤面板緊接于 instruments 面板 的右邊。該面板為每個 instrument 工具 供了收集數據的一個高級圖形視圖。你可以使用該面板來核查你從每個 instrument 工具收集到的數據,并可以選擇你想進一 步研究的區域。

跟蹤面板中的自然圖形可以讓你更容易的發現你程序的趨勢和潛在的問題。比 如,圖形中一個內存使用的尖峰信息意味著在該地方你的程序分配的內存比平時更 多。該尖峰信息可能是正常的,也可能是意味你的代碼比你預計在此地方創建了更多 的對象或內存緩沖區。一個 instrument 工具(例如 Spin Monitor instrument)也 同樣可以指出你程序反應遲鈍的地方。如果 Spin Monitor 的圖形相對是空白的,你 就知道你的程序是正常響應,但如果該圖形不空白,那么你可能需要核查為什么會出 現這樣的情況。

2. 詳細面板

??詳細面板一般在界面的下邊,通過它可以很好的跟蹤數據。可以通過下面方式打開詳細面板。

打開詳細面板
詳細面板展示

當詳細信息很多的時候,我們還可以搜索關鍵詞來找到想要的信息,如下圖所示。

詳細信息搜索

3. 擴展詳細面板

??對于部分 instruments 工具,擴展詳細面板顯示了當前在詳細面板里面所選擇的 項目的額外信息。你可以執行以下任一操作來打開和關閉擴展詳細面板。

  • 通過菜單欄,如下圖所示。
菜單欄打開
  • 通過下面的快捷鍵展開擴展面板,如下圖所示。
快捷鍵展開擴展面板

九、使用Allocations Instrument工具分析數據

??Allocations instrument 工具是一個跟蹤所有由應用程序分配的內存的工具。所以你可以使用那些信息來識別在你應用程序里面的內存分配模式,并識別你的應用程序內存效率低下的地方。

??因為它跟蹤整個應用程序生命周期的內存分配,你必須從 Instruments 應用里面 加載你的程序以便 Allocations instrument 工具可以收集它所需要的數據。在加載 的時候,Allocations instrument 使用系統中已有的掛鉤(hooks)來記錄與你應用程 序中分配和釋放事件相關的信息,無論這些事件起源于系統標準分配入口還是你自己 自定義的分配庫。隨著數據流的到來,instrument 更新并實時的向你顯示內存是如 何被分配的。

??Allocations instrument 可以工作在使用標準分配函數(如 malloc,calloc 或 free)的應用程序,而且也也可以工作在使用垃圾回收(garbage collected)的應用 程序上面。后一種情況,收集器依然調用 free 來釋放 GC-aware(GC 感知)內存。 Allocations instrument 同樣可以在構建在分配內存之上的例程里面工作,包括 Core Foundation 和 Cocoa 的內存分配例程。

分析對象分配的數據

??Allocation instrument 工具的目的是為你顯示你的應用程序如何使用內存。內存是系統重要的資源,你應該明智的使用它。每個內存分配都包含了直接成本和潛在 的長期成本。直接成本就是它分配內存所消耗的時間,包括創建新的虛擬內存頁面和 把它們映射到物理內存上面。它也有可能包括把陳舊的內存頁面寫入硬盤。而從長遠 來看,保持塊狀的物理內存可能觸發系統額外的頁面,這和其他頁面操作一樣可能對 系統性能損耗很大。和所有工具一樣,Allocation 工具開始的地方也是跟蹤面板。默認配置下,跟蹤 面板圖形化你當前應用程序使用內存數量的凈額。使用 instrument 的檢查器,你可 以修改視圖讓它顯示分配的密度,即內存分配發生的地方,或你也可以讓它顯示堆棧的深度。分配密度圖可以讓你查看在你程序里面內存分配發生的頻率。分配密度的尖峰意味著潛在的瓶頸,而你可以通過預先分配塊或減少對其他塊的依賴來減緩該情況。

跟蹤引用數的事件

??當你把 Allocations instrument 添加到你的文檔里面的時候,它的初始化配置是只記錄內存的分配和釋放的事件。默認情況下,它不會記錄引用數的事件,比如 CFRetain 和 CFRelease 的調用。原因是記錄引用數的事件會給從進程里面收集數據 增加了額外的開銷,而且在大部情況是不需要的。然而如果你的代碼發生內存泄露, 你可能想要配置 Allocations instrument 來記錄這些事件作為你努力追查泄露的一 部分。特別是,你可以查看任何不匹配的 retain 和 release 的事件來查看一個對象 是否最后引用被刪除了而它仍然保留著。

下面就是我的一個工程的內存分配。

內存分配

后記

未完,待續~~~

我的家
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容

  • 版本記錄 前言 我們在做app的時候,不是做完功能就結束了,很多時候是需要進行檢查和優化的,而xcode自帶了一個...
    刀客傳奇閱讀 1,802評論 0 1
  • 版本記錄 前言 我們在做app的時候,不是做完功能就結束了,很多時候是需要進行檢查和優化的,而xcode自帶了一個...
    刀客傳奇閱讀 2,431評論 0 0
  • Android 中build.gradle文件是兩個 app/build.gradle project/build...
    一s獨秀閱讀 497評論 0 1
  • 今天下午的課程收獲很多,做了什么題目,學到什么知識,現在總結在下面:(馬上就結束自己的大學課程了,再也不能坐在教室...
    蒙淘克閱讀 435評論 0 8
  • 2018年12月3日 星期一 多云 我的孩子是因為懶惰而作業拖拉,因粗心而差錯不斷,因“玩心”太重而注...
    嫑忈嘦怹_068e閱讀 88評論 0 1