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)
以下の様なツールも存在する。
(ファイル)システムキャッシュのワーキングセットのサイズを設定できるアプレット