プロセスの使用するメモリ構成に関して | Windows

プロセスが起動された場合、構成するメモリは以下の通りとなります。
仮想メモリ領域は共有可能/共有不可能(プライベート データ)領域が存在します。


スポンサード リンク

メモリの種類 説明
イメージ(Image) プロセスのファイルイメージ。(exeやdll)。Memory Mapped Fileの一種。
メモリ マップド ファイル(Memory Mapped) File メモリ マップド ファイル
共有可能(Shareable) プロセス間通信などによりプロセス間で共有可能なメモリ。
ヒープ(Heap) 動的に確保が可能なメモリ。C言語の場合は malloc 関数で確保、C++やJavaではnew で確保する。
メモリの確保/開放はアプリケーション側で実施。
Heap Managerにより割り当てられる。
(*)DEP(Data Execution Prevention)機能によりHeapAllocで確保した領域からのプログラム実行は不可能。
マネージ ヒープ(Managed Heap) .NET garbage collector により割り当てられる領域。
スタック(Stack) OSが自動的に確保/開放を行う。
ローカル変数、静的変数、パラメータなど。
サイズに制限があり、制限を越えると「Stack Over Flow」エラーが発生する。
サイズは小さい。
プライベート データ(Private Data) プロセスの仮想メモリから割り当てる、共有不可能なメモリ領域。
主にアプリケーションデータとして使用。
VirtualAlloc で確保。
カーネル(kernel) プロセスに関連したカーネルの物理メモリ。
主な用途はプロセスページテーブル。
未使用(Unusable) 未使用の領域。

以下は internet explorer を起動した場合の各メモリ消費量のサンプルです。

メモリの種類 サイズ(KB)
イメージ(Image) 115,264
メモリ マップド ファイル(Memory Mapped) File 102,812
共有可能(Shareable) 42,660
ヒープ(Heap) 110,624
マネージ ヒープ(Managed Heap) 0
スタック(Stack) 73,088
プライベート データ(Private Data) 100,828
カーネル(kernel) 1,240
未使用(Unusable) 8,140
合計 554,620

イメージが約115Mと大きな割合を占めます。専用ツールで確認すると、shell32.dllが約14M、ieframe.dll が約13M などで構成されていることが分かりました。

スポンサード リンク

[Windows メモリまとめに戻る]