性能調(diào)優(yōu)系列2:使用Instruments動(dòng)態(tài)分析內(nèi)存泄漏

轉(zhuǎn)載:http://www.cnblogs.com/ym123/p/4311670.html

第一篇介紹了Analyze對(duì)App做靜態(tài)分析乳蓄,可以發(fā)現(xiàn)應(yīng)用中的內(nèi)存泄漏問題,對(duì)于有些內(nèi)存泄漏情況通過靜態(tài)分析無法解決的揭厚,可以通過動(dòng)態(tài)分析來發(fā)現(xiàn),分析起來更有針對(duì)性。

從本篇開始介紹XCode提供的強(qiáng)大的分析工具Instruments攒发,內(nèi)存分析只是Instruments中的一個(gè)功能在刺,其他功能后續(xù)介紹逆害。

使用Instruments動(dòng)態(tài)分析內(nèi)存泄漏

Instruments中的Leaks功能主要用于分析內(nèi)存泄漏,還是以《IOS性能調(diào)優(yōu)系列:Analyze靜態(tài)分析》里內(nèi)存泄漏的例子還實(shí)驗(yàn):

1//截取部分圖像2+(UIImage*)getSubImage:(unsignedlong)ulUserHeader3{4UIImage * sourceImage = [UIImage imageNamed:@"header.png"];5CGFloat height =sourceImage.size.height;6CGRect rect = CGRectMake(0+ ulUserHeader*height,0, height, height);78CGImageRef imageRef =CGImageCreateWithImageInRect([sourceImage CGImage], rect);9UIImage* smallImage =[UIImage imageWithCGImage:imageRef];10//CGImageRelease(imageRef);1112returnsmallImage;13}

用注釋注釋掉CGImageRelease(imageRef)這行蚣驼,即使在ARC開啟的環(huán)境下魄幕,仍然會(huì)導(dǎo)致內(nèi)存泄漏(Arc is only for NSObject)。

使用Leaks開始動(dòng)態(tài)分析颖杏,點(diǎn)擊XCode的Product菜單Profile啟動(dòng)Instruments:

選擇Leaks纯陨,會(huì)自動(dòng)啟動(dòng)Leaks工具和IOS模擬器:

Leaks啟動(dòng)后會(huì)開始錄制,隨著對(duì)模擬器運(yùn)行的App的操作留储,可以在Leaks中查看內(nèi)存占用的情況翼抠。

注:如果你的項(xiàng)目使用了ARC,隨著你的操作获讳,不斷開啟或關(guān)閉視圖阴颖,內(nèi)存可能持續(xù)上升,但這不一定表示存在內(nèi)存泄漏丐膝,ARC釋放的時(shí)機(jī)是不固定的量愧。

Leaks頂部分為兩欄:Allocations和Leaks,右側(cè)的曲線代表內(nèi)存分配和內(nèi)存泄漏曲線帅矗。

點(diǎn)擊第二欄Leaks偎肃,進(jìn)行內(nèi)存泄漏分析,左下角會(huì)出現(xiàn)Leaks調(diào)試的選項(xiàng):

建議把Snapshot Interval間隔時(shí)間設(shè)置為10秒浑此,勾選Automatic Snapshotting累颂,Leaks會(huì)自動(dòng)進(jìn)行內(nèi)存捕捉分析。

在你懷疑有內(nèi)存泄漏的操作前和操作后凛俱,可以點(diǎn)擊Snapshot Now進(jìn)行手動(dòng)捕捉紊馏。

以下是切換到我的App中調(diào)用?+(UIImage*)getSubImage:(unsigned long)ulUserHeader 函數(shù)的視圖料饥,可以發(fā)現(xiàn)內(nèi)存泄漏:

Leaked Object的表格中顯示了內(nèi)存泄漏的類型、數(shù)量及內(nèi)存空間瘦棋。

點(diǎn)擊具體的某個(gè)內(nèi)存泄漏對(duì)象稀火,在右側(cè)Detail窗口中會(huì)出現(xiàn)導(dǎo)致泄漏可能的位置,其中黑色頭像代表了最可能的位置赌朋。

Leaks已成功找出了[CMTool getSubImage:]這個(gè)函數(shù):

內(nèi)存泄漏動(dòng)態(tài)分析技巧

熟練使用Leaks后會(huì)對(duì)內(nèi)存泄漏判斷更準(zhǔn)確凰狞,在可能導(dǎo)致泄漏的操作里,多使用Snapshot Now手動(dòng)捕捉沛慢。

開始時(shí)如果設(shè)備性能較好赡若,可以把自動(dòng)捕捉間隔設(shè)置為5秒鐘。

使用ARC的項(xiàng)目团甲,一般內(nèi)存泄漏都是malloc逾冬、自定義結(jié)構(gòu)、資源引起的躺苦,多注意這些地方進(jìn)行分析身腻。

開啟ARC后,內(nèi)存泄漏的原因

開啟了ARC并不是就不會(huì)存在內(nèi)存問題匹厘,蘋果有句名言:ARC is only for NSObject嘀趟。

在IOS 中使用malloc分配的內(nèi)存,ARC是不會(huì)處理的愈诚,需要自己進(jìn)行處理她按。

例子中的?CGImageRef 也是一個(gè)Image的指針,ARC也不會(huì)進(jìn)行處理炕柔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酌泰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匕累,更是在濱河造成了極大的恐慌陵刹,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欢嘿,死亡現(xiàn)場(chǎng)離奇詭異授霸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)际插,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來显设,“玉大人框弛,你說我怎么就攤上這事〔段妫” “怎么了瑟枫?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵斗搞,是天一觀的道長。 經(jīng)常有香客問我慷妙,道長僻焚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任膝擂,我火速辦了婚禮虑啤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘架馋。我一直安慰自己狞山,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布叉寂。 她就那樣靜靜地躺著萍启,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屏鳍。 梳的紋絲不亂的頭發(fā)上勘纯,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音钓瞭,去河邊找鬼驳遵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛降淮,可吹牛的內(nèi)容都是我干的超埋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼佳鳖,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼霍殴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起系吩,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤来庭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后穿挨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體月弛,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年科盛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帽衙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贞绵,死狀恐怖厉萝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤谴垫,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布章母,位于F島的核電站,受9級(jí)特大地震影響翩剪,放射性物質(zhì)發(fā)生泄漏乳怎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一前弯、第九天 我趴在偏房一處隱蔽的房頂上張望蚪缀。 院中可真熱鬧,春花似錦博杖、人聲如沸椿胯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哩盲。三九已至,卻和暖如春狈醉,著一層夾襖步出監(jiān)牢的瞬間廉油,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國打工苗傅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抒线,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓渣慕,卻偏偏與公主長得像嘶炭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逊桦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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