內(nèi)存分析

硬盤-->內(nèi)存-->CPU
內(nèi)存泄露

  1. 靜態(tài)內(nèi)存分析
    靜態(tài)內(nèi)存分析是不運行程序,直接對代碼進行分析.
    但是沒有真正分配內(nèi)存,根據(jù)代碼的上下文的語法結(jié)構(gòu),來分析是否有內(nèi)存泄露
    缺點:不一定準(zhǔn)確,但是如果發(fā)現(xiàn)有提示,那么去結(jié)合上下文看一下,這里的代碼是否有問題
    快捷鍵:command +shift +b
    進行方式:Product -- > Analyze
    2.imageName和imageWithContentOfFile

imageName:加載圖片
1.當(dāng)對象銷毀,圖片對象不會隨著一起銷毀
2.加載的圖片占據(jù)的內(nèi)存較大:9.48
3.相同的圖片只會加載一份到內(nèi)存中,如果同時使用,使用同一個對象即可

imageWithContentOfFile:加載圖片
1.當(dāng)對象銷毀的時候,圖形對象會隨著一起銷毀
2.加載的圖片,占據(jù)的內(nèi)存較小:6.25
3.相同的圖片會多次加載到內(nèi)存中,如果同時使用圖片,使用的是不同的對象

總結(jié):
imageName:如果一些圖片在多個界面都會使用,并且圖片較小,使用頻率高.(圖標(biāo)/小的背景圖)
imageWithContentOfFile:只在一個地方使用,并且圖片較大,使用頻率不高.(版本新特性/相冊)
3.動態(tài)內(nèi)存分析
優(yōu)點:真正運行起來的程序,并且可以對某一個操作來具體分析,當(dāng)用戶做了某一個操作時,該操作是否產(chǎn)生了內(nèi)存泄露(分廠準(zhǔn)確,如果提示有內(nèi)存泄露,基本可以說明代碼有問題)
缺點:分析速度非常慢,需要一步一步來分析代碼是否有問題,切可能在分析過程中有遺漏代碼。
進行方式:Product --> Profile -->Leaks --> 選擇想要運行的項目 --> Record

266345-5cc73c61f7ae76c0.png
266345-28c2b43923fe13da.png

這樣就可以開始動態(tài)檢測一個項目是否存在內(nèi)存泄露了。
注意:我們需要進行操作讓系統(tǒng)不斷去執(zhí)行所要檢測的代碼是否存在內(nèi)存泄露。
如果有內(nèi)存泄露會出現(xiàn)這樣的情況,由于筆者的 Xcode 是7.0 版本所以和 6.x 有所不同,但是使用是一樣的,我們點擊 Leak Checks 就能看到 Instrument 給出的提示。如果直接點擊會左邊的 Leaked Object 會進入?yún)R編的提示環(huán)境。

266345-be4e19b457a6baf9.png

這里我們在右側(cè) Stack Trace 攔下點擊我們所創(chuàng)建的方法,也就是帶人像的方法,這樣就能定位到泄露的位置了。

266345-f83ae0a0abd636dd.png

之后點擊右上角 Xcode 的圖標(biāo)直接回到 Xcode 代碼中進行修改,這樣我們動態(tài)內(nèi)存分析就完成了。

266345-5812ead6f94787d6.png

注意:我們可能會看到這樣的情況, All Heap Allocations 是程序真實的內(nèi)存分配情況,All Anonymous VM則是系統(tǒng)為程序分配的虛擬內(nèi)存,為的就是當(dāng)程序有需要的時候,能夠及時為程序提供足夠的內(nèi)存空間,而不會現(xiàn)用現(xiàn)創(chuàng)建。

266345-34d339d54700e6a4.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【內(nèi)存管理】一直是iOS開發(fā)中的一個重點。 本文就帶你從內(nèi)存分析開始一步步了解內(nèi)存的占用情況,從真實的情況中領(lǐng)悟真...
    xiaoyouPrince閱讀 1,123評論 0 1
  • 一. 靜態(tài)內(nèi)存分析 所謂靜態(tài)內(nèi)存分析, 是指在程序沒運行的時候, 通過工具對代碼直接進行分析根據(jù)代碼的上下文的語法...
    面糊閱讀 1,027評論 0 50
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,893評論 25 709
  • 我希望站在黃昏的海岸邊 與鯨相吻 我希望坐在破曉的深林里 與鹿歡談 我希望附于飛鳥的背脊上 逆風(fēng)飛翔 我希望從我手...
    不易1130閱讀 172評論 4 2
  • 不管是新零售還是老零售, 不賺錢的的零售就是耍流氓! 移除 點擊此處添加圖片說明文字 ?在新零售時代無論是各電商平...
    熊客閱讀 381評論 0 1

友情鏈接更多精彩內(nèi)容