前言
本文參考 騰訊bugly陳其鋒 大佬的文章實(shí)現(xiàn)的
原理
1.hook住free方法
2.先獲取自己保留的內(nèi)存的大小,如果將要達(dá)到自己設(shè)置的內(nèi)存閾值,則釋放掉一些內(nèi)存
如果沒有達(dá)到閾值,則判斷當(dāng)前要釋放的內(nèi)存大小是否小于所剩內(nèi)存,如果超出則走free方法
如果沒有超出,則判斷是否是OC類和是否是已經(jīng)在運(yùn)行時(shí)環(huán)境中已注冊(cè)的所有類里面
如果不是則走free方法
如果是,則內(nèi)存上填充0x55,在將自己定義的僵尸類的isa賦值過去,最后記錄原來的類
3.因?yàn)閒ree方法是要釋放內(nèi)存,所以我們把這塊內(nèi)存指向我們的僵尸對(duì)象是沒有問題的,但同時(shí)要考慮內(nèi)存的問題,所以在內(nèi)存緊張的時(shí)候,我們要釋放掉一些內(nèi)存。