內(nèi)存管理問(wèn)題

內(nèi)存管理是編程過(guò)程中的一個(gè)經(jīng)典問(wèn)題,早期在 C 語(yǔ)言時(shí)代,幾乎都靠 malloc/free 手動(dòng)管理內(nèi)存。隨著各個(gè)平臺(tái)的發(fā)展,到現(xiàn)在被廣泛采用的主要有兩個(gè)方法:

  • 引用計(jì)數(shù) (ARC,Automatic Reference Counting)

  • GC (Garbage Collection)

管理方法 ARC/GC

因?yàn)?Java 的流行,GC 被廣泛的認(rèn)知。GC 簡(jiǎn)單的說(shuō)是定期查找不再使用的對(duì)象,釋放對(duì)象占用的內(nèi)存。

基于 GC,申請(qǐng)的對(duì)象不需要手動(dòng)釋放,只需要確認(rèn)對(duì)象在不再需要時(shí),不再被其他對(duì)象引用。

引用計(jì)數(shù)早期主要用于底層系統(tǒng),比如文件系統(tǒng)的 inode 管理,后來(lái) C++ 的 boost 庫(kù)實(shí)現(xiàn)了一套完整的 ARC,目前流行的系統(tǒng)還有 Objective C 也是采用的 ARC。

ARC 的特點(diǎn)是,一個(gè)對(duì)象被引用時(shí),引用計(jì)數(shù)增加 1,引用對(duì)象釋放時(shí),引用計(jì)數(shù)減少 1,如果引用計(jì)數(shù)為 0,釋放對(duì)象。

比較

網(wǎng)友評(píng)論