メモリコンパクション【memory compaction】

概要

メモリコンパクションとはオペレーティングシステム(OS)などがメインメモリRAM)を管理する機能の一つで、断片化によって分散した空き領域を移動・統合し、連続した広い空き領域に再編する処理のこと。動的なメモリ割り当てが行われる環境で行われる。
メモリコンパクションのイメージ画像

プログラムを長時間実行すると、コードやデータの配置と破棄のためにメモリ領域の確保と解放が繰り返され、使用中の領域と空き領域が交互に並ぶようになる。これにより、小さな空き領域が飛び飛びの場所に点在する「メモリ断片化」(フラグメンテーション)という現象が起きる。断片化が進むと、空き領域の総量自体は十分でも、一つのプログラムが必要とする連続した広い領域を確保できなくなる場合がある。

メモリコンパクションが実行されると、OSは稼働中のプログラムを一時的に停止し、使用中の各領域を別の場所へ移動させて隙間なく詰め直す。これにより、散らばっていた空き領域が一方に集約され、単一の広大な空き領域が作り出される。処理中はメモリアドレス再配置ページテーブルの更新が行われ、メモリ管理ユニット仮想アドレス物理アドレスの対応を保つことで、アプリケーション側からの参照には影響が及ばないようになっている。

似た仕組みに「ガーベジコレクション」(garbage collection)がある。これは稼働中のプログラムが確保した領域のうち、既に使われなくなったと判断されるものを自動的に解放し、空き領域そのものを増やす処理である。多くのプログラミング言語の実行環境では、両者を組み合わせて実装し、不要な領域を解放した直後に断片化を解消する構成も採用されている。なお、ストレージ外部記憶装置)における同様の処理で、ファイルや空き領域の記録位置を再編して断片化を解消する処理は「デフラグメンテーション」(defragmentation)と呼ばれる。

(2026.6.19更新)
 

他の辞典等による「メモリコンパクション」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。