ガベージコレクション
使われなくなったメモリを自動で回収する仕組み。LISPで生まれ、JavaやC#などに受け継がれた。手作業のメモリ管理から解放することで、プログラマがバグの一因から離れられるようにした地味だが重要な技術。
年表
概要
使われなくなったメモリを自動で回収する仕組み。プログラマが手作業でメモリの確保・解放を管理する必要がなくなり、メモリリークなどのバグの一因から解放される。LISPで生まれ、その後Javaなど多くの言語に受け継がれた。
小話
「ガベージコレクション」という語がいつ最初に文章に登場したかは、実は本人の記述によれば少し込み入っている。John McCarthyが1960年に発表した論文「Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I」には、使われなくなった記憶領域(free-storage list)を回収する処理についての記述がある。McCarthy本人が後年その部分に付けた脚注によれば、「私たちはこの処理をすでに『ガベージコレクション』と呼んでいたが、論文の中でその語を使うのは怖気づいてしまった――というより、Research Laboratory of Electronicsの文法にうるさい人たちが許してくれなかったのかもしれない」と振り返っている。つまり、この語自体はMcCarthyたちの間ですでに使われていたが、1960年の原論文の本文にはあえて書かれなかった、ということになる。この脚注は後年(Stanfordでの再組版時)に追加されたものと見られ、「発明の瞬間」というより「その場にいた本人の回想」として読むのが正確だろう。
時代背景
この論文で紹介されたLISPは、IBM 704コンピュータ上でMITの人工知能グループによって開発されたプログラミングシステムだった。S式(symbolic expression)を再帰的に扱うための仕組みとして設計され、使われなくなったリスト構造を自動的に回収する仕組みが、この過程で必要とされていた。
現在
自動でメモリを回収するという発想は、その後JavaやC#をはじめとする多くの言語に受け継がれ、手作業のメモリ管理から開発者を解放する、地味だが重要な基盤技術になっている。
| 分野 | メモリ管理 |
|---|---|
| 起源 | LISP |