內(nèi)存管理問題
內(nèi)存管理是編程過程中的一個經(jīng)典問題,早期在 C 語言時代,幾乎都靠 malloc/free 手動管理內(nèi)存。隨著各個平臺的發(fā)展,到現(xiàn)在被廣泛采用的主要有兩個方法:
引用計數(shù) (ARC,Automatic Reference Counting)
GC (Garbage Collection)
管理方法 ARC/GC
因為 Java 的流行,GC 被廣泛的認(rèn)知。GC 簡單的說是定期查找不再使用的對象,釋放對象占用的內(nèi)存。
基于 GC,申請的對象不需要手動釋放,只需要確認(rèn)對象在不再需要時,不再被其他對象引用。
引用計數(shù)早期主要用于底層系統(tǒng),比如文件系統(tǒng)的 inode 管理,后來 C++ 的 boost 庫實現(xiàn)了一套完整的 ARC,目前流行的系統(tǒng)還有 Objective C 也是采用的 ARC。
ARC 的特點是,一個對象被引用時,引用計數(shù)增加 1,引用對象釋放時,引用計數(shù)減少 1,如果引用計數(shù)為 0,釋放對象。