最近一直在解決記憶體流失的問題,天天和Instruments這個工具打交道,本來想給大家寫一片相關的教程的。但是今天逛論壇的時候發現了別人翻譯的文檔,寫的好,自認為沒有辦法寫出。所以就不寫了,在這裡把那篇文章給大家轉載過來。
原文:Instruments User Guide
連結:https://developer.apple.com/library/ios/#DOCUMENTATION/DeveloperTools/Conceptual/InstrumentsUserGuide/Introduction/Introduction.html
PDF文檔下載:
Instruments 使用者指南.pdf (3748 K) 下載次數:5111
PS:
【翻譯緣由---翻譯本身也是強化學習的過程】
之前一直在CocoaChina上面潛水,雖然做iOS開發也快2年了,但是總覺得缺少了點什麼。以前查看英文API文檔,有些細節總是記不住,每次看完之後也沒什麼印象。忽然有一天有人向我抱怨說查看官方英文API文檔太痛苦了,然後我就想如果我把一些常用的官方文檔翻譯為中文的話,或許可以協助這批需要協助的人,然後偶就心血來潮,開始了自娛自樂的翻譯之旅。協助別人的同時,自己也獲得快樂。
或許很多人對Instruments應用不太瞭解,但可能很多老的iOS開發人員都應該用過Instruments工具來檢測iOS應用記憶體流失情況。特別是在iOS 5.0之前,即蘋果在iOS平台上面還沒支援ARC的時候,寫iOS應用就類似C語言那樣,容易忘記釋放記憶體,而記憶體對行動裝置而言是非常可貴的。即使目前iPhone裝置記憶體已經基本都滿足512MB了,但是因為蘋果的後台模式是把整個應用封裝起來等待下次啟用,所以該應用所佔用的記憶體同樣被佔據了。也就是即使應用進入後台模式,它還是仍然佔用原先的記憶體的,所以你開啟的應用越多,記憶體耗用自然也很多。對很多普通使用者而言,往往他們開啟的應用都是進入後台模式的,很少有使用者清理背景應用,所以也就造成很多應用其實可用記憶體還是非常有限地
(題外話:如果蘋果原生支援一鍵清理背景程式就好了,貌似越獄的工具裡面有這樣的支援的)。
還有做過iOS應用自動化測試的開發人員,應該對UIAutomation很熟悉吧。對,它就是通過JS指令碼來寫介面自動化測試案例。而Instruments應用對UIAutomation支援很完善,你可以通過它查看很多代碼潛在的問題,並測試效能。
其實Instruments應用還有很多強大的功能,它原生支援很多instrument工具,協助你分析你的代碼,不僅包括記憶體檢測和自動化測試,它還可以監測檔案讀寫操作等等待。所以一個好的iOS開發人員是應該掌握Instrument應用的使用。因為Instruments應用本身功能太強大的,所以完全掌握機會不可能,但是因為它們內建的很多工具具有相似性,所以你基本掌握自己常用的即可。同時瞭解一下內部有哪些功能,這樣在你需要用到的時候再查查文檔,就可以很快上手了。
最後,本文在翻譯過程中發現很多地方直譯成中文比較晦澀,所以採用了意譯的方式,這不可避免的造成有一些地方可能和原文有一定的出入,所以如果你閱讀的時候發現有任何的錯誤都可以給我發郵件:xyl.layne@gmail.com。
最後可以關注我微博大家一起溝通交流學習。
微博地址:
http://weibo.com/u/1826448972
最後希望這篇文檔能幫上那些感覺看官方英文文檔困難的人。如果可以我還是推薦盡量查看英文原文檔,畢竟那是原汁原味,翻譯總無法避免有一定的疏漏。
因為翻譯的時候寫在word裡面,格式太多,圖片上傳麻煩,所以乾脆直接轉換為PDF提供給大家下載。
以下提供目錄預覽:
目錄
INSTRUMENTS使用者指南介紹
本文檔組織圖
第一章 INSTRUMENTS快速入門
1.1 啟動INSTRUMENTS
1.2 建立一個跟蹤文檔
1.3 瀏覽跟蹤文件視窗
1.4 樣本:快速使用一個跟蹤
1.5 下一步是什嗎?
第二章 添加和配置INSTRUMENTS工具
2.1 使用INSTRUMENT庫
2.1.1 修改庫試圖模式
2.1.2 尋找庫裡面的某個instrument工具
2.1.3 建立一個自訂的instrument分組
2.2 添加和刪除INSTRUMENTS工具
2.3 配置一個INSTRUMENT工具
第三章 記錄跟蹤資料
3.1 選擇需要跟蹤的進程
3.1.1 跟蹤所有進程
3.1.2 跟蹤一個已有的進程
3.1.3 跟蹤一個新的進程
3.1.4 給每個Instrument工具指定不同的目標
3.2 收集資料
3.3 使用快速啟動鍵啟動INSTRUMENTS
3.4 以最小模式運行
3.5 從XCODE運行INSTRUMENTS應用
3.6 無線串連IOS裝置
第四章 記錄使用者介面軌跡
4.1 記錄使用者介面軌跡
4.2 重複記錄使用者介面軌跡
4.3 回放使用者介面軌跡
第五章 查看和分析跟蹤資料
5.1 查看資料的工具
5.1.1 跟蹤面板
5.1.2 詳細面板
5.1.3 擴充詳細面板
5.1.4 運行瀏覽器
5.2 分析技術
5.2.1 使用Sampler Instrument分析資料
5.2.2 使用Allocati***** Instrument工具分析資料
5.2.3 尋找記憶體泄露
5.2.4 分析Core Data應用程式
第六章 儲存和匯入跟蹤資料
6.1 儲存跟蹤文檔
6.2 匯出跟蹤資料
6.3 從SAMPLE工具中匯入資料
6.4 使用DTRACE資料
第七章 使用DTRACE建立自訂INSTRUMENTS工具
7.1 關於自訂INSTRUMENTS工具
7.2 建立自訂的INSTRUMENT工具
7.2.1 添加和刪除探針
7.2.2 指定探針的提供者
7.2.3 給探針添加斷言
7.2.4 給探針添加動作
7.2.5 編寫自訂指令碼的提示
7.2.6 編寫BEGIN和END指令碼
7.2.7 從自訂指令碼裡面訪問核心資料
7.2.8 變數範圍
7.2.9 尋找指令碼錯誤
7.3 匯出DTRACE指令碼
第八章 內建INSTRUMENTS工具
8.1 CORE DATA INSTRUMENTS[CORE DATA相關]
8.1.1 Core Data Saves
8.1.2 Core Data Fetches
8.1.3 Core Data Faults
8.1.4 Core Data Cache Misses
8.2 DISPATCH INSTRUMENTS[並發相關]
8.2.1 Dispatch
8.3 ENERGY DIAGNOSITICS INSTRUMENTS[電池診斷相關]
8.3.1 電量使用(Energy Usage)
8.3.2 CPU 活動(CPU Acitivity)
8.3.3 顯示亮度(Display Brightness)
8.3.4 休眠/喚醒(Sleep/Wake)
8.3.5 藍芽(Bluetooth)
8.3.6 無線(WiFi)
8.3.7 定位(GPS)
8.4 FILE SYSTEM INSTRUMENTS[檔案系統相關]
8.4.1 I/O 活動(I/O Activity)
8.4.2 檔案鎖(File Locks)
8.4.3 檔案屬性(File Attributes)
8.4.4 檔案活動(File Activity)
8.4.5 目錄I/O(Directory I/O)
8.5 GARBAGE COLLECTION INSTRUMENTS[記憶體回收相關]
8.5.1 GC Total
8.5.2 記憶體回收(Garbage Collection)
8.6 GRAPHICS INSTRUMENTS[繪圖相關]
8.6.1 核心動畫(Core Animation)
8.6.2 OpenGL磁碟機(OpenGL Driver)
8.6.3 OpenGL ES磁碟機(OpenGL ES Driver)
8.6.4 OpenGL ES分析器(OpenGL ES Analyzer)
8.7 INPUT/OUTPUT INSTRUMENTS[輸入輸出相關]
8.7.1 讀/寫(Reads/Wirtes)
8.8 MASTER TRACKS INSTRUMENTS[介面操作跟蹤相關]
8.8.1 使用者介面(User Interface)
8.9 MEMORY INSTRUMENTS[記憶體相關]
8.9.1 共用記憶體(Shared Memory)
8.9.2 分配記憶體(Allocati*****)
8.9.3 記憶體泄露(Leaks)
8.10 SYSTEM INSTRUMENTS[系統相關]
8.10.1 時間分析器(Time Profiler)
8.10.2 旋轉監控器(Spin Monitor)
8.10.3 取樣(Sampler)
8.10.4 進程(Process)
8.10.5 網路活動監控器(Network Activity Monitor)
8.10.6 記憶體監控器(Memory Monitor)
8.10.7 硬碟監控器(Disk Monitor)
8.10.8 CPU監控器(CPU Monitor)
8.10.9 活動監控器(Activity Monitor)
8.11 THREADS/LOCKS INSTRUMENTS[線程相關]
8.11.1 Java線程(Java Thread)
8.12 UI AUTOMATION[介面自動化相關]
8.12.1 使用Automation Instrument工具
8.12.2 訪問和操作使用者介面元素
8.12.3 添加靈活的逾時間
8.12.4 驗證測試結果
8.12.5 輸出測試結果和資料的日子
8.12.6 處理警告
8.12.7 檢測和指定裝置的方向
8.12.8 測試多任務
8.13 USER INTERFACE INSTRUMENTS[使用者介面相關]
8.13.1 Cocoa事件(Cocoa Events)
8.13.2 Carbon事件(Carbon Events)
結束語
推薦資源