辞書へ戻る概念の一覧

ガベージコレクション

がべーじこれくしょん概念1959

使われなくなったメモリを自動で回収する仕組み。LISPで生まれ、JavaC#などに受け継がれた。手作業のメモリ管理から解放することで、プログラマがバグの一因から離れられるようにした地味だが重要な技術。

年表

19604月、John McCarthyの論文「Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I」がCommunications of the ACMに掲載される

概要

使われなくなったメモリを自動で回収する仕組み。プログラマが手作業でメモリの確保・解放を管理する必要がなくなり、メモリリークなどのバグの一因から解放される。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)を再帰的に扱うための仕組みとして設計され、使われなくなったリスト構造を自動的に回収する仕組みが、この過程で必要とされていた。

現在

自動でメモリを回収するという発想は、その後JavaC#をはじめとする多くの言語に受け継がれ、手作業のメモリ管理から開発者を解放する、地味だが重要な基盤技術になっている。

分野メモリ管理
起源LISP

関連項目

  • Lispジョン・マッカーシーが考案した、リストを中心に据えた関数型寄りの言語。プログラムとデータを同じ形で扱える独特の設計を持ち、人工知能研究やプログラミング言語論に大きな影響を与えた。多くの方言を生みながら今も生き続けている。
  • Javaサン・マイクロシステムズが開発した、「一度書けばどこでも動く」を掲げた言語。仮想マシン上で動く仕組みで環境差を吸収し、企業システムやAndroidアプリの基盤として広く普及した。

関連技術

出典