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