1. 程式人生 > >垃圾收集趣史-Java垃圾收集演算法

垃圾收集趣史-Java垃圾收集演算法

如果一定要為垃圾收集技術找一個孿生兄弟,那麼, Lisp 語言才是當之無愧的人選。 1960 年前後誕生於 MIT 的 Lisp 語言是第一種高度依賴於動態記憶體分配技術的語言: Lisp 中幾乎所有資料都以“表”的形式出現,而“表”所佔用的空間則是在堆中動態分配得到的。 Lisp 語言先天就具有的動態記憶體管理特性要求 Lisp 語言的設計者必須解決堆中每一個記憶體塊的自動釋放問題(否則, Lisp 程式設計師就必然被程式中不計其數的 free 或 delete 語句淹沒),這直接導致了垃圾收集技術的誕生和發展——說句題外話,上大學時,一位老師曾告訴我們, Lisp 是對現代軟體開發技術貢獻最大的語言。我當時對這一說法不以為然:佈滿了圓括號,看上去像迷宮一樣的 Lisp 語言怎麼能比 C 語言或 Pascal 語言更偉大呢?不過現在,當我知道垃圾收集技術、資料結構技術、人工智慧技術、並行處理技術、虛擬機器技術、元資料技術以及程式設計師們耳熟能詳的許多技術都起源於 Lisp 語言時,我特別想向那位老師當面道歉,並收回我當時的幼稚想法。