Web教材一覧ハードウェアとソフトウェア

メモリリークとガベージコレクション


メモリリーク

本来アプリケーションが動的に占有したメモリ領域は、処理が終了した時点で動的に解放して他のアプリケーションで利用できるようにする必要があります。なんらかの理由で、占有領域が解放しないまま放置されることがあります。それをガベッジ(ごみ)といいます。
 ガベッジがたまると、利用可能なメモリ領域が減少しまいます。それをメモリリークといいます。

(注)リソースリーク
 メモリリークの対象を資源全般に拡大した概念です。一般には、アプリケーションが確保したファイルを終了時に解放せずに放置している状態です。これは起こると、他のアプリケーションがこのファイルを使おうとしたとき「他のアプリケーションで使用中です」というようなメッセージが表示されて実行できない状態になります。

ガベージコレクション

自動的にガベッジ領域を収集して強制的に解放してメモリリークを解消する処理をガベージコレクションといいます。

コンパクション

ガベージコレクション機能によりガベッジ領域が再利用可能になっても、小さい領域があちこちに分散していると、新規に確保する領域も分散してしまいます。処理効率向上のためのキャッシュメモリを効果的に行うには、連続した領域に配置することが必要です。
 コンパクションはメモリ内に分散している領域を一か所にまとめる機能です(ディスクでのデフラグに相当する機能です)。
 なお、実務的には、ガベージコレクションと連動してコンパクションを行うことが多いことから、両者を合わせてガベージコレクションということもあります。

 

本シリーズの目次へ