「ガベージコレクション」とは|テクスタ辞書


「ガベージコレクション」とは、実行中のプログラムが使用しなくなったメモリ領域や、プログラム同士の隙間のメモリ領域などを集めて生み出した、利用可能なメモリ領域のことです。

特徴

ガベージコレクションは、OSやプログラミング言語の実行環境が持つメモリ管理機能の一つです。ガベージコレクションがうまく機能しないと、メモリ領域の再利用ができず、次第に利用可能なメモリが減少するため、OSやアプリケーションソフトの再起動が必要となります。

ガベージコレクションの役割

ガベージコレクションが果たしている役割は、単なるごみ集めには留まりません。ガベージコレクションには、以下の3つの機能があると考えられます。

  • 新規オブジェクトのメモリへの割り当て
  • ガベージオブジェクトの特定
  • ガベージオブジェクトからのメモリの解放

このように説明できるのは、ガベージコレクションが、アプリケーションに対して使用できるメモリとオブジェクトを提供するためです。ガベージコレクションの速度が落ちたり停止したりすると、アプリケーション自体の実行速度が落ちたり停止したりすることに繋がります。

ガベージコレクションが起こすパフォーマンスへの影響

JAVA言語の場合、ガベージコレクションはJVM(JAVA仮想システム)が自動的に行います。一方で注意しなければならないのは、JVMがガベージ・コレクションを実行している間、Javaプログラムを実行中のスレッドなど他の全てのスレッドが停止してしまうことです。

ガベージ・コレクションが動作している間、高負荷状態となるCPUは1個だけであり、ほかのCPUはほとんど動かなくなってしまいます。このように、ガベージ・コレクションはJavaプログラム全体をスローダウンさせる大きな原因となります。そのため、Javaプログラムのパフォーマンスをコントロールするためには、ガベージコレクションが発生する頻度をよく把握することが重要となります。