iOS之深入解析内存管理Tagged Pointer的底层原理
生活随笔
收集整理的這篇文章主要介紹了
iOS之深入解析内存管理Tagged Pointer的底层原理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、前言
① Tagged Pointer 概念
- iOS 開發(fā)者對“引用計數(shù)”這個名詞肯定不陌生,引用計數(shù)是蘋果為了方便開發(fā)者管理內(nèi)存而引入的一個概念。當引用計數(shù)為 0 時,對象就會被釋放。但是,真的是所有對象都是這樣嗎?
- 其實,內(nèi)存管理方案除了常見的 MRC 和 ARC,還有以下三種:Tagged Pointer、Nonpointer_isa、SideTables。
- 在 2013 年 9 月,蘋果推出了 iPhone5s,與此同時,iPhone5s 配備了首個采用 64 位架構的 A7 雙核處理器,為了節(jié)省內(nèi)存和提高執(zhí)行效率,蘋果提出了 Tagged Pointer 的概念。
- 對于 64 位程序,引入 Tagged Pointer 后,指針的值不再是堆區(qū)地址,而是包含真正的值,相關邏輯能減少一半的內(nèi)存占用,以及 3 倍的訪問速度提升,100 倍的創(chuàng)建和銷毀速度的提升,用于優(yōu)化小對象(NSString,NSNumber,NSDate)的存儲。
② Tagged Pointer 特點
- 專門用來優(yōu)化存儲小對象,比如 NSString,NSNumber,NSDate。
- Tagged Pointer 指針的值不再是堆區(qū)地址,而是包含真正的值,因此它不會在堆上再開辟空間了,也不需要管理對象的生命周期了。
- 內(nèi)存讀取提升 3 倍,創(chuàng)建比之前快 100 多倍,銷毀速度更快。
總結
以上是生活随笔為你收集整理的iOS之深入解析内存管理Tagged Pointer的底层原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS之深入解析Runloop的底层原理
- 下一篇: iOS之深入解析KVC的底层原理和自定义