メモリー・フットプリント
From Wikipedia, the free encyclopedia
メモリー・フットプリント(英語: memory footprint)は、プログラムが実行中に使用または参照するメインメモリの合計量を意味する[1]。
フットプリント (footprint) という単語は、一般には、物体が専有する物理的な次元の範囲、つまり、物体の大きさを意味する。コンピュータ科学の分野では、ソフトウェア・アプリケーションのメモリー・フットプリントとは、プログラムの実行中に必要なメモリの量を意味する。このメモリの中には、(大部分の)プログラムの命令(や一部の定数)が格納されているコードセグメント、(初期化または未初期化状態の)データセグメント、ヒープメモリ、コールスタック、その他に必要な追加のデータ構造であるシンボルテーブル、デバッグ用データ構造、オープンしたファイル、現在のプロセスにマップされた共有ライブラリなど、プログラムが実行中や実行後に少なくとも1回読み込まれる可能性のある、あらゆるアクティブなメモリ領域が含まれる[2]。
大きなプログラムは大きなフットプリントを持つ。アプリケーションのメモリフットプリントは、大まかに言って、読み込む共有ライブラリやクラスの数やサイズに比例し、一方、静的なライブラリや静的なデータ領域は、固定サイズ(定数)のフットプリントを増加させる。通常、メモリー・フットプリントの大部分を占めるのは、プログラム本体のサイズではなく、むしろ、ランタイム環境によって追加される構造である。たとえば、C++コンパイラは、プログラムの実行中にアクティブな、vtables、型情報のオブジェクト、多数の一時的で匿名のオブジェクトなどを追加する。Javaのプログラムでは、メモリー・フットプリントの大部分は、Javaアプリケーション実行時に間接的に読み込まれる、Java Virtual Machine (JVM) の形で実行環境を構築するために消費される。さらに、ほとんどのオペレーティングシステムでは、アプリケーションがオープンしたディスクファイルもアプリケーションのアドレス空間に読み込まれるため、フットプリントが増加する。