內(nèi)存泄漏 Instruments Leak使用

內(nèi)存泄漏就是應(yīng)該釋放而沒(méi)有釋放的內(nèi)存遣臼!

內(nèi)存溢出 out of memory:是指程序在申請(qǐng)內(nèi)存時(shí),沒(méi)有足夠的內(nèi)存空間供其使用拾并,出現(xiàn)out of memory暑诸;比如申請(qǐng)了一個(gè)integer,但給它存了long才能存下的數(shù)蚌讼,那就是內(nèi)存溢出
內(nèi)存泄露 memory leak:是指程序在申請(qǐng)內(nèi)存后,無(wú)法釋放已申請(qǐng)的內(nèi)存空間个榕,一次內(nèi)存泄露危害可以忽略篡石,但內(nèi)存泄露堆積后果很?chē)?yán)重,無(wú)論多少內(nèi)存,遲早會(huì)被占光
memory leak會(huì)最終會(huì)導(dǎo)致out of memory西采!

以發(fā)生的方式來(lái)分類(lèi)凰萨,內(nèi)存泄漏可以分為4類(lèi):

  1. 常發(fā)性內(nèi)存泄漏:發(fā)生內(nèi)存泄漏的代碼會(huì)被多次執(zhí)行到,每次被執(zhí)行的時(shí)候都會(huì)導(dǎo)致一塊內(nèi)存泄漏
  2. 偶發(fā)性內(nèi)存泄漏:發(fā)生內(nèi)存泄漏的代碼只有在某些特定環(huán)境或操作過(guò)程下才會(huì)發(fā)生械馆。常發(fā)性和偶發(fā)性是相對(duì)的胖眷。對(duì)于特定的環(huán)境,偶發(fā)性的也許就變成了常發(fā)性的霹崎。所以測(cè)試環(huán)境和測(cè)試方法對(duì)檢測(cè)內(nèi)存泄漏至關(guān)重要
  3. 一次性內(nèi)存泄漏:發(fā)生內(nèi)存泄漏的代碼只會(huì)被執(zhí)行一次珊搀,或者由于算法上的缺陷,導(dǎo)致總會(huì)有一塊僅且一塊內(nèi)存發(fā)生泄漏尾菇。比如境析,在類(lèi)的構(gòu)造函數(shù)中分配內(nèi)存,在析構(gòu)函數(shù)中卻沒(méi)有釋放該內(nèi)存派诬,所以內(nèi)存泄漏只會(huì)發(fā)生一次
  4. 隱式內(nèi)存泄漏:程序在運(yùn)行過(guò)程中不停的分配內(nèi)存劳淆,但是直到結(jié)束的時(shí)候才釋放內(nèi)存。嚴(yán)格的說(shuō)這里并沒(méi)有發(fā)生內(nèi)存泄漏默赂,因?yàn)樽罱K程序釋放了所有申請(qǐng)的內(nèi)存沛鸵。但是對(duì)于一個(gè)服務(wù)器程序,需要運(yùn)行幾天缆八,幾周甚至幾個(gè)月曲掰,不及時(shí)釋放內(nèi)存也可能導(dǎo)致最終耗盡系統(tǒng)的所有內(nèi)存。所以奈辰,我們稱(chēng)這類(lèi)內(nèi)存泄漏為隱式內(nèi)存泄漏

影響:從用戶使用程序的角度來(lái)看栏妖,內(nèi)存泄漏本身不會(huì)產(chǎn)生什么危害,作為一般的用戶冯挎,根本感覺(jué)不到內(nèi)存泄漏的存在。真正有危害的是內(nèi)存泄漏的堆積咙鞍,這會(huì)最終消耗盡系統(tǒng)所有的內(nèi)存

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

內(nèi)存泄漏檢測(cè)方法常用的兩種方式是用Xcode自帶的 Instruments Leaks內(nèi)存管理器Analyze兩種方式

  1. Analyze靜態(tài)分析:打開(kāi)項(xiàng)目房官,點(diǎn)擊Product->Analyze,進(jìn)入靜態(tài)分析续滋,結(jié)果如下

    Instruments Leak - 01.png

    根據(jù)提示信息一一排查問(wèn)題翰守,靜態(tài)內(nèi)存泄漏分析能發(fā)現(xiàn)大部分問(wèn)題,但只是靜態(tài)分析并不準(zhǔn)確疲酌,只是有可能發(fā)生內(nèi)存泄漏蜡峰,動(dòng)態(tài)內(nèi)存分配的情況沒(méi)有排查了袁,畢竟某些頁(yè)面的交互操作需要用戶去做某些操作時(shí)才會(huì)發(fā)生內(nèi)存泄漏,下面我們就著重說(shuō)一下動(dòng)態(tài)內(nèi)存泄漏分析 Instruments Leaks

  2. Instruments Leaks動(dòng)態(tài)分析:有三種打開(kāi)Instruments的方式

    • 通過(guò)Xcode->Open Developer Tool->Instruments


      Instruments Leak - 02.png
    • 通過(guò)Product->Profile


      Instruments Leak - 03.png
    • 通過(guò)長(zhǎng)按啟動(dòng)->Profile
      Instruments Leak - 04.png

      啟動(dòng)成功后我們選擇Leaks湿颅,進(jìn)入檢測(cè)
      Instruments Leak - 05.png

      Instruments Leak - 06.png

      在上面選擇運(yùn)行設(shè)備载绿,之后選擇想要檢測(cè)的項(xiàng)目,點(diǎn)擊左面紅色按鈕運(yùn)行油航,檢測(cè)之前寫(xiě)了段有問(wèn)題代碼
      Instruments Leak - 07.png

      Instruments Leak - 08.png

      當(dāng)出現(xiàn)上圖紅色叉叉表示有內(nèi)存泄漏崭庸,選擇Leak Checks,下圖左上角Leaks處選擇Call Tree谊囚,點(diǎn)擊下方Call Tree勾選Invert Call Tree和Hide System Libraries怕享,剩下的直觀就看到類(lèi)和方法
      Instruments Leak - 09.png

      Separate by Thread:每個(gè)線程被單獨(dú)考慮
      Invert Call Tree:調(diào)用棧會(huì)自上至下顯示,字面意思就是反轉(zhuǎn)樹(shù)形結(jié)構(gòu)也很好理解
      Hide System Libraries:只有你自己app中出現(xiàn)的符號(hào)會(huì)被顯示出來(lái)镰踏,隱藏系統(tǒng)庫(kù)
      Flatten Recursion:該選項(xiàng)將每一個(gè)調(diào)用棧中的遞歸函數(shù)(調(diào)用它們自身的函數(shù))視作單一入口函筋,而不是多入口
      其中可能有同學(xué)沒(méi)有顯示類(lèi)名方法名,不要急奠伪,那是因?yàn)閄code的配置問(wèn)題跌帐,找到Build Setting->Debug information Format,把Debug和Release都改成DWARF with dSYM File芳来,然后重新啟動(dòng)項(xiàng)目和Leaks即可
      Instruments Leak - 10.png

      雙擊查看詳情含末,就是剛才寫(xiě)的問(wèn)題代碼,對(duì)應(yīng)做出修改解決問(wèn)題
      Instruments Leak - 11.png

我的更多文章:你等下課滴

您可以關(guān)注我以便隨時(shí)查看我最新的文章即舌,本篇文章是為了做筆記佣盒,順便提供給大家共同學(xué)習(xí)進(jìn)步!如果您對(duì)本篇文章有任何疑問(wèn)顽聂,請(qǐng)留言給我肥惭,有什么錯(cuò)誤也可以留言提醒,如果對(duì)大家有幫助我很榮幸紊搪!感謝蜜葱!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耀石,隨后出現(xiàn)的幾起案子牵囤,更是在濱河造成了極大的恐慌,老刑警劉巖滞伟,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揭鳞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡梆奈,警方通過(guò)查閱死者的電腦和手機(jī)野崇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)亩钟,“玉大人乓梨,你說(shuō)我怎么就攤上這事鳖轰。” “怎么了扶镀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蕴侣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我狈惫,道長(zhǎng)睛蛛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任胧谈,我火速辦了婚禮忆肾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菱肖。我一直安慰自己客冈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布稳强。 她就那樣靜靜地躺著场仲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪退疫。 梳的紋絲不亂的頭發(fā)上渠缕,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音褒繁,去河邊找鬼亦鳞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棒坏,可吹牛的內(nèi)容都是我干的燕差。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坝冕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼徒探!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起喂窟,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎磨澡,沒(méi)想到半個(gè)月后碗啄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钱贯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年挫掏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侦另。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秩命。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尉共,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弃锐,到底是詐尸還是另有隱情袄友,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布霹菊,位于F島的核電站剧蚣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏旋廷。R本人自食惡果不足惜鸠按,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饶碘。 院中可真熱鬧目尖,春花似錦、人聲如沸扎运。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)豪治。三九已至洞拨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間负拟,已是汗流浹背烦衣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留齿椅,地道東北人琉挖。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像涣脚,于是被迫代替她去往敵國(guó)和親示辈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

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

  • 一遣蚀、Instruments介紹 Instruments 一個(gè)很靈活的矾麻、強(qiáng)大的工具,是性能分析芭梯、動(dòng)態(tài)跟蹤 和分析OS...
    音符上的碼字員閱讀 17,465評(píng)論 0 31
  • Xcode Instruments是用于動(dòng)態(tài)調(diào)追蹤和分析OS X和iOS的代碼的性能分析和測(cè)試工具险耀; 打開(kāi)方式: ...
    慌莫染閱讀 16,290評(píng)論 1 8
  • Instruments時(shí)一個(gè)很靈活的、強(qiáng)大的工具玖喘,是性能分析甩牺、動(dòng)態(tài)跟蹤和分析OSX以及iOS代碼的測(cè)試工具。使用它...
    阿凡提說(shuō)AI閱讀 1,652評(píng)論 2 0
  • 最近公司寫(xiě)的項(xiàng)目中遇到了內(nèi)存泄漏的問(wèn)題累奈,一直對(duì)instruments的使用很不熟練贬派,借此機(jī)會(huì)記錄一下使用經(jīng)驗(yàn)急但。 A...
    iOS開(kāi)發(fā)到汽修閱讀 1,804評(píng)論 0 5
  • 先來(lái)一發(fā)蘋(píng)果官網(wǎng)上Instruments User Guide,其實(shí)沒(méi)啥用搞乏,英語(yǔ)不好的也懶得去看波桩。(反正我是看不懂...
    和玨貓閱讀 29,911評(píng)論 51 376