プロセスが起動された場合、構成するメモリは以下の通りとなります。
仮想メモリ領域は共有可能/共有不可能(プライベート データ)領域が存在します。
| メモリの種類 | 説明 | 
| イメージ(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 などで構成されていることが分かりました。
スポンサード リンク