日本黄色三级视频-日本黄色片一级-日本黄色片www-日本黄色免费在线视频-草草影院浮力-草草影视在线观看

歡迎來(lái)到酷云建站平臺(tái),全網(wǎng)營(yíng)銷云系統(tǒng)加盟中心!

海量企業(yè)網(wǎng)站模板 · 任您選擇

美出特色,精出品質(zhì),一切為了企業(yè)更好的營(yíng)銷

隱藏側(cè)欄
Beta
轉(zhuǎn)載

APP開(kāi)發(fā)之使用Analyze和Instruments工具解決內(nèi)存泄漏問(wèn)題

       小程序     2021-12-16     admin     129     0    

內(nèi)存泄漏指一個(gè)對(duì)象或變量在使用完成后沒(méi)有釋放掉,這個(gè)對(duì)象一直占用這部分內(nèi)存,直到應(yīng)用停止。如果這種對(duì)象過(guò)多,內(nèi)存就會(huì)耗盡,其他應(yīng)用就無(wú)法運(yùn)行。這個(gè)在問(wèn)題C++、C和Objective-C的MRC中是比較普遍的問(wèn)題。

在Objective-C中,釋放對(duì)象的內(nèi)存時(shí),可以發(fā)送release和autorelease消息,它們都可以將引用計(jì)數(shù)減1。當(dāng)引用計(jì)數(shù)為0時(shí),release消息會(huì)使對(duì)象立刻釋放,autorelease消息會(huì)將對(duì)象放入內(nèi)存釋放池中延遲釋放。

下面徐州APP制作開(kāi)發(fā)公司-百恒網(wǎng)絡(luò)為您介紹一下Objective-C工程中ViewController的代碼片段:

Objective-C工程中ViewController的代碼片段一

Objective-C工程中ViewController的代碼片段二

大家看看,上面的這3個(gè)方法會(huì)有什么問(wèn)題呢?如果代碼基于ARC,這是沒(méi)有問(wèn)題的,但遺憾的這是基于MRC的,都存在內(nèi)存泄漏的可能性。從理論上講,內(nèi)存泄漏是由對(duì)象或變量沒(méi)有釋放引起的,但實(shí)踐證明并非所有的未釋放對(duì)象或變量都會(huì)導(dǎo)致內(nèi)存泄漏,這與硬件環(huán)境和操作系統(tǒng)環(huán)境有關(guān),因此我們需要檢測(cè)工具幫助我們找到這些“泄漏點(diǎn)”。

在Xcode中,共提供了兩種工具幫助查找泄漏點(diǎn):Analyze和Instruments。Analyze是靜態(tài)分析工具。可以通過(guò)Product→Analyze菜單項(xiàng)啟動(dòng)。圖1所示為使用Analyze工具進(jìn)行靜態(tài)分析之后的代碼界面。Instruments是動(dòng)態(tài)分析工具,它與Xcode集成在一起,可以在Xcode中通過(guò)Product→Profile菜單項(xiàng)啟動(dòng)。如圖2所示,Instruments有很多跟蹤模板可以動(dòng)態(tài)分析和跟蹤內(nèi)存、CPU和文件系統(tǒng)。

使用Analyze進(jìn)行靜態(tài)分析的代碼界面

Instruments分析工具

我們可以結(jié)合使用這兩個(gè)工具查找泄漏點(diǎn)。先使用Analyze靜態(tài)分析查找可疑泄漏點(diǎn),再用Instruments動(dòng)態(tài)分析中的Leaks和Allocations跟蹤模板進(jìn)行動(dòng)態(tài)跟蹤分析,確認(rèn)這些點(diǎn)是否泄漏,或者是否有新的泄漏出現(xiàn)等。

在圖1所示的Analyze靜態(tài)分析結(jié)果中,凡是有圖標(biāo)的行都是工具發(fā)現(xiàn)的疑似泄漏點(diǎn)。點(diǎn)擊viewDidLoad方法中疑似泄漏點(diǎn)行末尾的圖標(biāo),會(huì)展開(kāi)分析結(jié)果,具體如圖3所示。

viewDidLoad方法的疑似泄漏點(diǎn)展開(kāi)結(jié)果

圖3中的線表明了程序執(zhí)行的路徑。在這個(gè)路徑中,第1處說(shuō)明在第25行中,Objective-C對(duì)象的引用計(jì)數(shù)是1,說(shuō)明在這里創(chuàng)建了一個(gè)Objective-C對(duì)象。第2處說(shuō)明在第27行中引用計(jì)數(shù)為1,該對(duì)象沒(méi)有釋放,懷疑有泄漏。這樣的說(shuō)明已經(jīng)很明顯地告訴我們問(wèn)題所在了,[[NSArray alloc] initWithContentsOfFile:plistPath]創(chuàng)建了一個(gè)對(duì)象,并賦值給listTeams屬性所代表的成員變量,然而完成了賦值工作之后,創(chuàng)建的對(duì)象并沒(méi)有顯式地發(fā)送release和autorelease消息。這里可以將代碼修改如下:

NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];

self.listTeams = array;

[array release];

點(diǎn)擊tableView:cellForRowAtIndexPath:方法中疑似泄漏點(diǎn)行末尾的圖標(biāo),展開(kāi)分析結(jié)果,如圖4所示。

tableView:cellForRowAtIndexPath:方法的疑似泄漏點(diǎn)展開(kāi)結(jié)果

這主要說(shuō)明UITableViewCell *類型的cell對(duì)象在第64行有可能存在泄漏。在表視圖中,tableView:cellForRowAtIndexPath:方法用于實(shí)例化表視圖單元格并設(shè)置數(shù)據(jù),因此cell對(duì)象實(shí)例化后不能馬上釋放,而應(yīng)該使用autorelease延遲釋放。可以在創(chuàng)建cell對(duì)象時(shí)發(fā)送autorelease消息,將代碼修改如下:

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault

reuseIdentifier:CellIdentifier] autorelease];

}

我們?cè)倏匆幌聇ableView:didSelectRowAtIndexPath:方法中的疑似泄漏點(diǎn),共有兩個(gè)。點(diǎn)擊行末尾的圖標(biāo),展開(kāi)分析結(jié)果,具體如圖5和圖6所示。

圖5 tableView:didSelectRowAtIndexPath:方法疑似泄漏點(diǎn)1的展現(xiàn)結(jié)果 圖6 tableView:didSelectRowAIndexPath:方法疑似泄漏點(diǎn)2的展開(kāi)結(jié)果

圖5所示的是message對(duì)象創(chuàng)建之后沒(méi)有釋放,我們只需要在[alert show]之后添加[message release]語(yǔ)句代碼就可以了。

在Objective-C中,實(shí)例化對(duì)象有如下兩種方式:

NSString *message = [[NSString alloc] initWithFormat:@'您選擇了%@隊(duì)。', rowValue]; ①

NSString *message = [NSString stringWithFormat:@'您選擇了%@隊(duì)。', rowValue]; ②

第①行所示的以init開(kāi)頭的構(gòu)造方法在alloc之后調(diào)用,我們將其稱為“實(shí)例構(gòu)造方法”。對(duì)于使用該方法創(chuàng)建的對(duì)象,其所有權(quán)是調(diào)用者,調(diào)用者需要對(duì)它的生命周期負(fù)責(zé),具體說(shuō)就是負(fù)責(zé)創(chuàng)建和釋放。第②行所示的以string開(kāi)頭的方法,它通過(guò)類直接調(diào)用,我們將其稱為“類級(jí)構(gòu)造方法”。對(duì)于使用該方法創(chuàng)建的對(duì)象,其所有權(quán)非調(diào)用者所有,調(diào)用者無(wú)權(quán)釋放它,否則就會(huì)因過(guò)度釋放而“僵尸化”。

圖6所示的是UIAlertView *類型的alert對(duì)象創(chuàng)建后沒(méi)有釋放,我們只需要在[alert show]之后添加[alertrelease]語(yǔ)句就可以了。修改之后的代碼如下:

UIAlertView *類型的alert對(duì)象創(chuàng)建后沒(méi)有釋放

上面介紹的是使用Analyze靜態(tài)分析查找可疑泄漏點(diǎn)。之所以稱為“可疑泄漏點(diǎn)”,是因?yàn)檫@些點(diǎn)未必一定泄漏。確認(rèn)這些點(diǎn)是否泄漏,還要通過(guò)Instruments動(dòng)態(tài)分析工具中的Leaks和Allocations跟蹤模板。Analyze靜態(tài)分析只是一個(gè)理論上的預(yù)測(cè)過(guò)程。在Xcode中通過(guò)Product→Profile菜單項(xiàng)啟動(dòng)Instruments動(dòng)態(tài)分析工具,接著選擇Leaks模板,打開(kāi)的界面如圖7所示。

Instruments的Leaks模板

在Instruments中,雖然選擇了Leaks模板,但默認(rèn)情況下也會(huì)添加Allocations模板。基本上凡是分析內(nèi)存都會(huì)使用Allocations模板,它可以監(jiān)控內(nèi)存分布情況。選中Allocations模板(圖中①區(qū)域),右邊的③區(qū)域會(huì)顯示隨著時(shí)間的變化內(nèi)存使用的折線圖,同時(shí)在④區(qū)域會(huì)顯示內(nèi)存使用的詳細(xì)信息以及對(duì)象分配情況。點(diǎn)擊Leaks模板(圖中②區(qū)域),可以查看內(nèi)存泄漏情況。如圖8所示,如果在③區(qū)域有紅線出現(xiàn),則有內(nèi)存泄漏,④區(qū)域則會(huì)顯示泄漏的對(duì)象。

Instruments檢測(cè)到的內(nèi)存泄漏

圖8中出現(xiàn)的泄漏是在點(diǎn)擊表視圖中單元格測(cè)試tableView:didSelectRowAtIndexPath:方法時(shí)發(fā)生的,點(diǎn)擊泄漏對(duì)象Address列后面的按鈕,會(huì)進(jìn)入如圖9所示的詳細(xì)界面。可以發(fā)現(xiàn),里面有兩個(gè)對(duì)象,可以看到它們的內(nèi)存地址、占用字節(jié)、所屬框架和響應(yīng)方法等信息。

查看泄露的詳細(xì)信息

在圖9中,點(diǎn)擊右邊的跟蹤堆棧信息按鈕,如圖10所示,其中圖標(biāo)所示的條目是我們自己應(yīng)用的代碼,點(diǎn)擊它即可進(jìn)入程序代碼,如圖11所示。

圖10 查看堆棧信息 圖11 查看泄漏點(diǎn)

圖11所示的第84行代碼是可能的泄漏點(diǎn)。事實(shí)上,內(nèi)存泄漏是極其復(fù)雜的問(wèn)題,工具使用是一方面,經(jīng)驗(yàn)是另一方面。提高經(jīng)驗(yàn),然后借助于工具才是解決內(nèi)存泄漏的根本。


--結(jié)束END--

本文鏈接: http://www.hzyljq.cn/start/2387.html (轉(zhuǎn)載時(shí)請(qǐng)注明來(lái)源鏈接)

 
本文標(biāo)簽: 全部

下班PC閱讀不方便?

手機(jī)也可以隨時(shí)學(xué)習(xí)開(kāi)發(fā)

微信關(guān)注公眾號(hào)“酷云”
"酷云平臺(tái)前端開(kāi)發(fā)教學(xué)"
每日干貨技術(shù)分享
 

×

成為 酷云平臺(tái) 代理商!

關(guān)注

微信
關(guān)注

微信掃一掃
獲取最新優(yōu)惠信息

酷云平臺(tái)公眾號(hào)

客服

聯(lián)系
客服

很高興為您服務(wù)
尊敬的用戶,歡迎您咨詢,我們?yōu)樾掠脩魷?zhǔn)備了優(yōu)惠好禮。 咨詢客服

聯(lián)系客服:

在線QQ: 3206174

客服電話: 0516-83703228

售前咨詢 售后服務(wù)
在線交談 智能小云

工作時(shí)間:

周一至周五: 09:00 - 17:00

WAP

手機(jī)
訪問(wèn)

移動(dòng)端訪問(wèn)
手機(jī)上也能選模板

酷云平臺(tái)手機(jī)端

射精情感曰妓女色视频| 岳好紧好紧我要进去了电影| 国产精品99无码一区二区| 久久久久久久极品内射 | 麻豆三级电影无码| 中文字幕无码AV不卡一区 | 无人免费观看视频在线观看| 国产肉体XXXX裸体137大胆| 亚洲AV成人一区国产精品小说| 韩国善良的小峓子在钱| 亚洲精选无码久久久| 久久久亚洲欧洲日产国码ΑV | 无码久久一区二区| 国农村精品国产自线拍| 亚洲精品无码AV人在线播放| 久久久精品人妻一区二区三区四 | 无码人妻黑人中文字幕| 国产亚洲AV片在线观看播放| 亚洲国产精品人人爽夜夜爽| 久久精品无码一区二区APP | 精品无码一区二区三区亚洲桃色 | 无码A级毛片免费视频内谢5J| 精品人妻无码一区二区色欲AⅤ| 亚洲综合色成在线观看| 妺妺窝人体色WWW人体色| YIN荡到骨子里的SAO货| 色综合色天天久久婷婷基地| 撞击成熟美妇老师后臀| 欧美成人一区二区三区在线视频| 波多野结衣AV高清中文字幕| 舔高中女生奶头内射视频| 国产亚洲成AV人片在线观看| 在线天堂中文最新版WWW下载| 欧洲美女与动交ZOZ0Z| 岛国片无删减上线| 午夜DJ免费完整在线看网| 精产国品一二三区别9978| 在线播放人成视频观看| 三上悠亚AV资源站| 国模小黎大尺度精品(02)[| 夜里18款禁用B站入口探APP| 欧美黑人XXXX性高清版| 父母全家儿女大联欢第14集| 羞羞在线版免费阅读入口 | 四川绿帽人妻51分钟在线| 国产亚洲精品视觉盛宴| 性欧美牲交XXXXX视频| 日产精品乱码卡一卡2卡三网站| 成人精品视频一区二区三区尤物| 完全着衣の爆乳お姉さんが| 老熟女@TUBEUMTV| 把八重神子焯出白水怎么办| 无码国产精成人午夜视频不卡| 久久无码人妻一区二区三区 | 久久99国产精品久久99果冻传| 69久久夜色精品国产69| 少妇私密会所按摩到高潮呻吟| 久久精品免费观看国产| 大象成品网站1688入口官网| 亚洲熟妇无码乱码AV电影| 欧美精品VIDEOSSEX少妇| 国产自偷自偷免费一区| H漫无码动漫AV动漫在线播放| 玩弄丰满少妇XXXXX性多毛| 久久国产AVJUST麻豆| PETEDAVIDSON鸟多长| 无码熟妇人妻AV在线影片免费| 免费无码午夜福利片| 国产亲子伦ⅩⅩⅩⅩX熟妇| 在线天天看片视频免费观看| 无码日韩做暖暖大全免费不卡| 男男无码SM调教GV资源| 国产白丝JK捆绑束缚调教视频| 亚洲人成网7777777国产| 欧洲一本到卡二卡三卡乱码| 精品国产一区二区三区无码蜜桃| ASIANMATURE老熟妇女| 午夜DJ免费完整在线看网| 欧美成人猛片AAAAAAA| 黑人与亚洲美女ⅩXXX| AV无码小缝喷白浆在线观看| 亚洲成AV人片无码不卡| 欧美噜噜久久久XXX| 国产全肉乱妇杂乱视频| WWW国产无套内射COM| 亚洲色成人四虎在线观看| 人妖CHINESECDTS在线| 黑人男女粗大猛烈进出视频| 成人精品视频一区二区三区不卡 | 学长别揉了~流水了想要~| 人妻被按摩师玩弄到潮喷| 国内揄拍国内精品少妇国语| 成人免费A级毛片免费| 真人做受试看120分钟小视频| 性色AV免费观看| 日本熟妇XXⅩ浓密黑毛HD| 老司机精品成人无码AV| 国精产品一区二区三区| 粉嫩泬一区二区三区| 一本一道AⅤ无码中文字幕| 无码人妻毛片丰滿熟婦区毛片色欲 | 大J8黑人BBW巨大怪物| 专干熟肥老妇人视频在线看| 亚洲狠狠婷婷综合久久久久图片| 人妻熟妇乱又伦精品HD| 好男人在线视频神马影视WWW| 草草浮力院禁止18进入| 亚洲日韩欧美一区二区三区 | 欧美性爱AAAAA| 好男人电影在线观看| 丰满的熟妇人妻中文字幕久久| 99国精产品灬源码168| 亚洲AV综合色区无码一二三区 | 久久99精品久久久久久清纯| 国产久9视频这里只有精品| 99热这里只有精品免费播放| 亚洲AV综合色一区二区三区| 熟女肥臀av二区三区四区| 欧美熟女一区二区三区| 久久人人爽人人爽人人AV| 韩国av一区二区| 国产精品久久久久久精品三级 | 精品人妻无码区在线视频| 国产精品亚洲А∨天堂免下载| 成人午夜福利视频网址| 又硬又大又长又粗又深| 小东西才几天没做喷的到处都是| 强开小婷嫩苞又嫩又紧视频| 美丽人妻在夫前被黑人| 精品午夜人成一区| 国精产品W灬源码1688伊在| 国产成人精品午夜福利在线观看 | 又色又爽又黄18禁美女裸身无遮| 亚洲国产另类久久久精品黑人| 无码字幕AV一区二区三区| 少妇熟女久久综合网色欲| 日本熟妇人妻XXXXX| 欧美午夜精品久久久久免费视 | 极品婬荡少妇XXXX欧美| 国产品无码一区二区三区在线蜜桃 | 亚洲精品无码成人| 亚洲AV无码专区国产乱码软件 | 中文字幕丝袜人妻制服丝袜在线| 亚洲午夜性春猛交77777 | 欧美又粗又大XXXXBBBB疯狂| 久久精品成人亚洲另类欧美| 国产精品亚洲综合一区在线观看 | 中文字幕不卡乱偷在线观看| 亚洲中文字幕无码爆乳| 亚洲AV成人精品网站在线播放| 我趁老师睡觉偷偷的脱她内裤| 色欲欲WWW成人网站| 日本人妻熟妇丰满成熟HD系列| 麻花传媒MD0076在线入口| 久久夜色精品国产亚洲| 狠狠色婷婷久久一区二区| 国精产品一二二区视早餐有限 | 人善交XUANWEN200| 强开少妇嫩苞又嫩又紧小说| 欧美无人区码卡二三卡四卡| 欧美视频二区欧美影视| 欧美片内射欧美美美妇| 欧美成A高清在线观看| 欧美成人精品三级网站视频| 女人高潮特级毛片| 久久久久久午夜成人影院| 久久精品国产99久久丝袜蜜桃| 精品久久免费一区二区三区四区| 狠狠躁夜夜躁人人爽超碰97香蕉| 国产精品有码无码AV在线播放| 国产精品IGAO视频网网址| 国产精品久久777777| 国产精品第20页| 国产色视频一区二区三区| 国产特级毛片AAAAAA视频| 国精产品一品二品国精日本| 好男人无码内射AV| 精品人妻系列无码人妻漫画| 久久97久久97精品免视看| 久久久久精品少妇9999| 狼人青草久久网伊人| 久久国产精品免费一区| 久久久久亚洲AV无码专区导航| 久久综合伊人77777| 妺妺窝人体色WWW聚色窝| 欧美人与禽Z0ZO牲伦交| 人妻少妇精品无码专区APP| 日韩成人无码一区二区三区| 少妇人妻无码永久免费视频 | AV电影在线观看| АⅤ资源中文在线天堂| BBBBBBBBB老妇人BBB| 82岁老人找20多岁小伙子| 中文字幕日产乱码国内自| 999国内精品永久免费视频| YY111111少妇影院理论片| 大香伊人久久精品一区二区| 国产精品99久久久久久宅男| 国内精品视频一区二区三区 | 男女一起差差差差差|