在說Xcode自帶測試方法前先講下程序在內(nèi)存中的空間劃分, 一般可分為5個部分:
#1. BSS段, 存放未初始化的全局變量. BSS是英文Block Started by Symbol的簡稱。BSS段屬于靜態(tài)內(nèi)存分配。
#2. 數(shù)據(jù)段, 存放已初始化的全局變量和全局靜態(tài)變量. 數(shù)據(jù)段屬于靜態(tài)內(nèi)存分配
#3. 代碼段, 存放程序執(zhí)行代碼
#4. 堆 , 存放進(jìn)程中被動態(tài)分配的內(nèi)存段.
#5. 棧 , 存放函數(shù)的參數(shù)值和局部變量, 由編譯器自動分配和釋放.
常說的內(nèi)存管理是對堆內(nèi)存的管理.
內(nèi)存泄露指動態(tài)分配開辟出來的空間, 在使用完畢后未釋放, 或者未被回收直至程序結(jié)束.
Xcode自帶有一套測試工具
Analyze - 靜態(tài)分析
如下圖位置:
會自動檢查代碼中是否有以下錯誤:
#1. 是否創(chuàng)建了一個對象, 但并沒有使用它
#2. 是否創(chuàng)建了一個對象或者指針, 對其初始化后卻一直沒有讀取過
#3. 是否調(diào)用的讓某個對象引用計數(shù)加1的方法, 卻沒有調(diào)用引用計數(shù)減1的方法
#4. 是否有錯誤返回類型.
運(yùn)行后如果檢查到有上述錯誤, 會有藍(lán)色的提示, 如圖
下面再就是常用的Instruments, 使用前注意最好選擇真機(jī)運(yùn)行不要選模擬器
打開Instruments是選擇上面第一張圖中的Profile, 包含以下測試功能:
我們介紹下常用的Instruments三杰:
Leaks - 內(nèi)存泄露檢查
這樣一般如果有做過靜態(tài)檢查Analyze就比較少會出問題, 運(yùn)行的截圖:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26
