<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Xcode調(diào)試內(nèi)存最新理解

      前提:
      Xcode 16.0 beta

      設(shè)置

      Scheme設(shè)置中勾選Malloc ScribbleMalloc Stack Logging

      這么做是為了在Memory GraphProfile中追溯數(shù)據(jù)在哪句代碼生成。

      此設(shè)置會(huì)導(dǎo)致App硬盤占用異常增多,調(diào)試完畢之后需要把選項(xiàng)關(guān)閉。

      Allocations

      許多人剛開始用它第一能看懂的是上方圖標(biāo)內(nèi)存的實(shí)時(shí)變化。但對(duì)下方的各種數(shù)據(jù)和選項(xiàng)就一臉懵逼。本文首先想介紹上下交界的選項(xiàng)。

      選中不同選項(xiàng)會(huì)切換到不同的視角,本文會(huì)著重提及后三個(gè)。

      Allocations List

      在這里需要注意的是可以點(diǎn)擊黃色劃線處來更改數(shù)據(jù)排序,右側(cè)會(huì)顯示創(chuàng)建這項(xiàng)數(shù)據(jù)時(shí)的方法堆棧。

      點(diǎn)擊橙色處則是過濾選項(xiàng),光看選項(xiàng)名字其實(shí)是有些猜不懂意思,但鑒于小果果“優(yōu)秀”的交互設(shè)計(jì),用戶把鼠標(biāo)指針停留一會(huì)會(huì)自動(dòng)顯示選項(xiàng)的詳細(xì)顯示(設(shè)計(jì)真優(yōu)秀的話就不會(huì)取這么難懂的名字了)。

      解釋這三種選項(xiàng):

      • All Allocations:所有
      • Created & Persistent:顯示所選時(shí)間范圍內(nèi),結(jié)束時(shí)仍然存在的分配情況。
      • Created & Destroyed:顯示所選時(shí)間范圍內(nèi),結(jié)束時(shí)已經(jīng)不存在的分配情況。

      這個(gè)選項(xiàng)個(gè)人也是經(jīng)常用到的,因?yàn)槲覀兛磧?nèi)存一般會(huì)選定一段內(nèi)存開始分配到應(yīng)該釋放的時(shí)間段進(jìn)行觀察,這樣過濾掉之后會(huì)發(fā)現(xiàn)有哪些內(nèi)存數(shù)據(jù)在這個(gè)階段應(yīng)該釋放但沒有釋放的問題(甚至對(duì)于編譯器來講都不算內(nèi)存泄露)。

      Call Trees

      這里主要是從方法的角度來統(tǒng)計(jì)內(nèi)存占用的空間,每一條數(shù)據(jù)都對(duì)應(yīng)著一個(gè)方法,同時(shí)可以通過Bytes Used說明總占用內(nèi)存空間,用Count表示總共調(diào)用此方法的次數(shù)。

      在看的時(shí)候我其實(shí)還推薦在列表中右鍵,增加顯示兩組數(shù)據(jù):Self BytesSelf %,這樣看到是否當(dāng)前方法是否占用內(nèi)存,還是要再往深處尋找。

      和上一節(jié)一樣,右側(cè)能看到詳細(xì)的方法堆棧,橙色劃線的選項(xiàng)功能也在上節(jié)介紹過,這里不再贅述。在這里還需要關(guān)注的是紅色劃線的Call Tree這個(gè)過濾選項(xiàng)。

      五個(gè)選項(xiàng)一般能用到的就這三個(gè):

      • Separate by Thread: 按照線程分類,比如向查看主線程是否任務(wù)過于繁重時(shí)可以用上
      • Invert Call Tree: 反向顯示樹
      • Hide System Libraries: 隱藏系統(tǒng)庫(kù),很多方法會(huì)最終調(diào)用到系統(tǒng)方法內(nèi),而很多系統(tǒng)方法內(nèi)接著沒完沒了地向下調(diào)用系統(tǒng)方法,我們開發(fā)者一般對(duì)此不會(huì)太感興趣(問題真出在系統(tǒng)方法里面也沒法改),一般會(huì)先選上。

      Generations限于篇幅原因姑且略過,其實(shí)也是十分有用的機(jī)制。它通過在時(shí)間軸增加節(jié)點(diǎn),然后能返回到上一個(gè)時(shí)間節(jié)點(diǎn)之間出現(xiàn)的內(nèi)存分配。另外提醒有心人,節(jié)點(diǎn)是是時(shí)間軸上的小旗子,并且可以移動(dòng)小旗子更改標(biāo)記的時(shí)間點(diǎn)

      實(shí)踐:內(nèi)存圖分享至Instruments

      其實(shí)這一節(jié)的內(nèi)容才是讓我萌生寫文章的動(dòng)機(jī),畢竟我們?nèi)粘i_發(fā)場(chǎng)景時(shí)debug中才能遇到了內(nèi)存暴漲之類的問題,這個(gè)時(shí)候我們才想去修理內(nèi)存,debug時(shí)檢查內(nèi)存一般會(huì)點(diǎn)擊Debug Memory Graph

      這里可以看到各種變量之間的引用關(guān)系,對(duì)于查找循環(huán)引用會(huì)十分直觀,但是如果我們遇到問題是想找內(nèi)存暴漲問題原因的話就十分困難。
      解決的方法是點(diǎn)擊上圖中紅線位置的分享按鈕,然后選擇Instruments

      于是來到了熟悉的界面。

      你可以在這個(gè)基礎(chǔ)上繼續(xù)查找內(nèi)存的問題,而且提醒一下,如果你還沒有中斷剛才的debug的話,你可以在這個(gè)界面里把感興趣的內(nèi)存地址復(fù)制回Xcode,在內(nèi)存圖的角度繼續(xù)檢查。

      總結(jié)

      這次對(duì)Xcode的內(nèi)存調(diào)試工具做了進(jìn)一步的學(xué)習(xí),同時(shí)解決了我一個(gè)疑惑:內(nèi)存圖可以從引用的維度調(diào)試問題,但應(yīng)該如何銜接到Instruments繼續(xù)研究,畢竟看問題的角度不應(yīng)該只有一個(gè)。

       


       

      訂閱RSS

      posted @ 2024-06-22 16:39  MrYu4  閱讀(419)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 黑人巨大粗物挺进了少妇| 中文熟妇人妻av在线| 午夜福利高清在线观看| 亚洲日韩AV秘 无码一区二区| 爱情岛亚洲论坛成人网站| 人妻熟女一区无中文字幕| 亚洲激情一区二区三区视频| 99精品国产一区二区三区不卡| 在厨房拨开内裤进入在线视频| 麻豆蜜桃av蜜臀av色欲av| 日本一区二区三本视频在线观看| 成人网站免费在线观看| 日本夜爽爽一区二区三区| 国产v亚洲v天堂无码久久久| 久久精品女人的天堂av| 丰满人妻无码∧v区视频| 国内自拍视频一区二区三区| 中文字幕亚洲男人的天堂| 亚洲国产中文字幕精品| 日本一区二区三区免费播放视频站| 亚洲高潮喷水无码AV电影| 国产精品一码二码三码| 成人精品天堂一区二区三区| 亚洲av成人精品日韩一区| 亚洲精品国产av成拍色拍个| 亚洲第一国产综合| 久久成人 久久鬼色| 精品无码成人久久久久久| 日韩精品av一区二区三区| 92自拍视频爽啪在线观看| 日韩少妇人妻vs中文字幕| 罗田县| 国产精品久久久久久福利69堂| 四虎在线中文字幕一区| 成人精品国产一区二区网| 中国美女a级毛片| 无码人妻精品一区二区在线视频| 久久精品蜜芽亚洲国产av | 乱老年女人伦免费视频| 亚洲男人第一无码av网站| 色综合久久久久综合99|