Perfmon カウンターの「メモリ」-「ワーキング セット」の説明に次のコメントが表示されます。
コンピュータの空きメモリがしきい値を超えている場合、ページは使用されていなくてもプロセスのワーキング セットに残されます。空きメモリがしきい値を下回ると、ページはワーキング セットから削除されます。
このしきい値に関するドキュメントは見つかりませんでした。利用可能なRAMのパーセンテージですか?コミット チャージが使用可能なすべての RAM を消費するときですか? システムはカーネル ページとユーザー モード ページをどのように扱いますか?
だから私の質問は:
- その閾値は何ですか?
- それを検出する方法はありますか?
- Windows のバージョンが異なれば、動作やしきい値も異なりますか?
シナリオは、プロセスが使用可能な物理 RAM と同じ量のメモリを使用しようとすることです。その制限に達すると、メモリの特定のチャンクの割り当てを解除してディスクにキャッシュし、新しいもののためのスペースを作ることができます。これは、メモリの状態が低い場合にページ ファイルのスラッシングを軽減するのに役立ちます。メモリ使用量が魔法のしきい値を超えたため、メモリ マネージャーがページをディスクにスワップし始める前に、割り当て解除を実行したいと思います。
現在、MEMORYSTATUSEX::ullAvailPhys 値 (GlobalMemoryStatusEx によって埋められる) を使用して、使用可能な物理メモリの量を特定しています。