[WWDC2018] ——深入解析iOS內(nèi)存/iOS Memory Deep Dive(二)

接上文[WWDC2018] ——深入解析iOS內(nèi)存/iOS Memory Deep Dive(一)。

三、Tools For Profiling Footprint

講了instruments的一些使用,有一些技巧和新特性,我并不是很關注這個,本文會跳過這一節(jié),有興趣的人可以自行查看。

四、Images

圖片渲染格式

SRGB format : 每個通道2個byte,每個像素4個byte,分別表示紅、綠、藍、透明度通道。
Wide format : 每個通道2個byte,每個像素8個byte。支持更寬的色域,但占用內(nèi)存更多,使用需謹慎。
Luminance and alpha 8 format : 每個像素8個byte,分別表示灰度和透明度,適用于 Metal APP中的陰影,通常的APP中很少用到。
Alpha 8 format : 每個像素1個byte,單色。適用于蒙層、無emoji的文字等。

通常的圖片,都是使用SRGB進行渲染,也就是老生常談的圖片尺寸*4,才是圖片使用的真正內(nèi)存。

推薦使用iOS10引入的新API,UIGraphicsImageRenderer,可以在iOS12中自動選擇合適的format,這個在做一些基礎圖形渲染時比較有用,比如貝塞爾曲線繪制,陰影繪制等。

圖像下采樣(Downsampling)

使用imageIO進行圖像降低采樣,可以有效的減小圖片內(nèi)存。這個問題和我在自己的圖片優(yōu)化文章中有提到過。圖像降低采樣優(yōu)化,在LKImageKit中有,在SDWebImage中則沒有。

五、Optimizing when in background

在APP進入后臺時的一些推薦操作:

1.通過APP的生命周期,如 forground, background等事件
2.通過頁面的生命周期,如 viewWillAppear, wiewDidLoad等事件

當頁面在后臺時,卸載圖片資源,在頁面進入前臺時,加載圖片資源。那么為什么要這么做呢。這個是在iOS生態(tài)下,各APP間互惠互利的一個行為,后臺APP使用更少的資源,就能更好的提升前臺應用的體驗。退一步說,APP進入后臺后,使用更少的內(nèi)存,也可以減少后臺OOM。雖然現(xiàn)在國內(nèi)的企業(yè)幾乎不關注后臺OOM,但是其實對于用戶來說,后臺進程被殺也是一個相當糟糕的用戶體驗。

六、Demo演示

七、總結

總體而論,是一個很好的session,對iOS內(nèi)存不怎么了解的同學可以從這個session中學到很多有用的東西。但是除了一些新的feature,幾個蘋果工程師講解的iOS內(nèi)存相關的問題,做過幾年iOS開發(fā)都是會知道的。

而我個人比較期待的是:

Memory Footprint Limit 各設備的技術公式或者準確值(這個有民間的統(tǒng)計數(shù)據(jù),但是并沒有官方的指導值)。
Memory Footprint Limit 和Memory Warning的關系,也即是Memory Footprint值在什么情況下回觸發(fā)內(nèi)存警告,以及OOM(同樣的,這個有民間的統(tǒng)計數(shù)據(jù),但是并沒有官方的指導值)。
Memory Warning的其他影響因素。session中只說了可優(yōu)化的在Memory Footprint,但是實際上內(nèi)存警告應該不止Memory Footprint單一約束條件。

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

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

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