ガーベッジコレクション

ガーベッジコレクションとは、プログラム中で動的確保したメモリが不要になったとき、それを自動で解放する仕組みのことを言います。

Lispでは、プログラマにメモリの確保・解放を依存させないように設計されているため、その代わりこのガーベッジコレクションが必要になります。

ただ、ガーベッジコレクションの仕組みによっては、不要なメモリを探索するために処理が重くなったり、どのタイミングでそれが起こるのかが難しかったりと、便利さの影には不便な側面もあります。

ガーベッジコレクションアルゴリズムにも様々な種類があり、ここではそのいくつかをリストにしてみました。

  • Reference Counter
  • Mark and Sweep
  • Copying

これらのアルゴリズムと新しい考えを混ぜ合わせて、ガーベッジコレクションを実装しているプログラムもあるようなので、実装方法は様々なようです。

兄弟の多いLispSchemeでは、その処理系によっても仕組みが違うようです。