以下為維基百科中 垃圾回收 (計算機科學) 條目的定義:
垃圾回收(英語:Garbage Collection,縮寫為GC)在計算機科學中是一種自動的記憶體管理機制。當一個電腦上的動態記憶體不再需要時,就應該予以釋放,以讓出記憶體,這種記憶體資源管理,稱為垃圾回收。垃圾回收器可以讓程式員減輕許多負擔,也減少程式員犯錯的機會。垃圾回收最早起源於LISP語言。目前許多語言如Smalltalk、Java、C#和D語言都支援垃圾回收器。
Java, C# 等高階語言本身內建了垃圾回收器,
例如在 Java 中,可以調用 System.gc() 來建議 JVM 進行垃圾回收。
自動的垃圾回收可以讓程式員不需要考慮太多動態記憶體釋放、管理問題,
這樣可以減少了內存洩漏、詭異的錯誤導致系統崩潰等問題。
相對手動釋放 ( malloc() + free() ),
垃圾回收器效率較低,需要額外的空間進行標記,
拖慢了程序的速度。
垃圾回收器 對垃圾的回收方法也有很多種,
根據維基百科,大約有以下分類:
收集器實現:
1.參照計數收集器
2.跟蹤收集器回收演算法:
1.標記-清除
2.標記-壓縮
3.複製
4.增量回收器
5.分代
其實我對上述的理論做法並不熟悉...
但將會實現垃圾回收器的方法,超級像貝姆垃圾收集器,
Boehm-Demers-Weiser garbage collector,也就是著名的Boehm GC,是計算機應用在C/C++語言上的一個保守的垃圾回收器,可應用於許多經由C/C++開發的專案,同時也適用於其它執行環境的各類程式語言。
以及採用類似 【標記-清除】 概念的方法。
查了一下還蠻多相關實現的。
云风的 BLOG: 给 C 实现一个垃圾收集器
https://blog.codingnow.com/2008/06/gc_for_c.html
自己动手写垃圾收集器[译] - 简书
https://www.jianshu.com/p/82c6337581db
垃圾回收算法与 JVM 垃圾回收器综述 - 知乎
https://zhuanlan.zhihu.com/p/28258571
GC 的实现原理 - 简书
https://www.jianshu.com/p/7305b10decf1
沒有詳細看,有空再看。
垃圾回收 (電腦科學) - 維基百科,自由的百科全書
https://zh.wikipedia.org/zh-hk/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)
貝姆垃圾收集器 - 維基百科,自由的百科全書
https://zh.wikipedia.org/zh-hk/%E8%B2%9D%E5%A7%86%E5%9E%83%E5%9C%BE%E6%94%B6%E9%9B%86%E5%99%A8