Open棟梁Project - マイクロソフト系技術情報 Wiki
物理メモリのライフサイクルについて説明する。
※ 仮想メモリ管理とは別です。
プロセスが(仮想記憶上で)メモリ割当を行った場合、
プロセスが(仮想記憶上で)メモリ開放を行った場合、
ワーキングセットをスタンバイリストに移動するWindowsOSの物理メモリ管理の動作を指す。
各プロセスに割り当てられる物理メモリ。
内部動作に影響を与え、システム全体の性能に影響するため慎重に使用すること。
ワーキングセットのうち、他のプロセスと共有できない(DLL、MMFを除く)メモリ ページのセット。
システムに割り当てられる物理メモリ。≒ (ファイル)システムキャッシュ
スタンバイリストは利用可能なページを溜め込んでいるリスト的なもの。
スタンバイリストは、プログラムによって書き換えられていないページ。
変更済みページリストは、プログラムによって書き換えられたページであり、
ページングファイル(ディスク)に書き込まれた後に、スタンバイ リストを経由してでないとワーキングセットに戻せない。
ワーキングセット中に未使用のメモリページが存在せず、メモリページの個数が上限に達している場合、ワーキングセットからメモリページを取り除き、取り除いたメモリページを必要に応じてページングファイルにスワップアウトし、新たに物理メモリ上のメモリページを割り当て、ワーキングセットに追加する。
また、利用中のワーキングセットのページがトリミングによりスタンバイリストに移動させられた際に、プロセスがこれらのページにアクセスした場合、ページは、ワーキング セットへ "ソフト ページ フォールト" で戻される。これは"ハード ページ フォールト"と比べるとディスク アクセスを必要としないので非常に高速である。
Windbgの以下のコマンドで確認できる。
0: kd> !memusage loading PFN database loading (100% complete) Compiling memory usage data (99% Complete). Zeroed: 173816 (695264 kb) Free: 0 ( 0 kb) Standby: 71317 (285268 kb) Modified: 1387 ( 5548 kb) ModifiedNoWrite: 561 ( 2244 kb) Active/Valid: 145881 (583524 kb) Transition: 16 ( 64 kb) Unknown: 0 ( 0 kb) TOTAL: 392978 (1571912 kb)
以下の様なツールも存在する。
(ファイル)システムキャッシュのワーキングセットのサイズを設定できるアプレット