それが役立つ場合、リソースモニターは他のすべてのRAMを「スタンバイ」と説明します
「スタンバイ」RAM が使用中です。ページキャッシュとして使用されています(すべてのプロセスワーキングセットから最近失われたページを保持します。つまり、これらのページフォールトはディスクに移動せずに解決できます)。また、SuperFetchによるプロアクティブなファイルキャッシュにも使用されます。
スタンバイページを他の用途に割り当てる前にディスクに書き込む必要がないため、「利用可能」と見なされます。プロセスがページフォルト当たったときのようなんディスクからの読み取りが必要ですが、新しい物理ページ(複数可)は、そのプロセスに割り当てられている必要があり、必要に応じてこれらは、スタンバイリストから撮影することができます。(これは、この目的のためのページを見つけるための最初の選択肢ではありません。それが無料でゼロページリストになります。)
言い換えれば、システムは正常に動作しています。
Windows Internalsのtestlimit
実験で使用されたツールの1つであるコマンドラインツールを使用すると、システムでより多くのRAMを強制的に「使用中」状態にすることができます。通常のsysinternalsツールの一部ではありませんが、関連付けられています。sysinternalsサイトで見つけてください。ダウンロードは、testlimit.exeとtestlimit64.exeの2つのバージョンを含むzipファイルです。両方ともリンクされたラージアドレス対応であるため、32ビットバージョンでは、/ 3GBでブートされた32ビットマシンで最大3 GiB、64ビットマシンで最大4 GiBを割り当てることができます。
c:\> testlimit -?
助けを与えます。
c:\> testlimit -d 4 -c 512
それぞれ4 MiBの512割り当てで2 GiBのプロセスプライベート仮想アドレス空間を割り当てようとします。これは、64ビットマシンで正常に動作するはずです。32ビットマシンではない / 3GB(ほとんどではない)で起動され、それはそう、ものの数MIBはプロセス(プログラム自体のように、すべてのDLLなど)にすでにあります少し前B / Cをエラーありプログラムが割り当てる完全な2 GiBがありません。
どちらの場合も、「使用可能」RAMが減少し、「使用中」RAMが増加しますが、OSがプロセス内のすべての2 GiBをプライベートワーキングセットのままにする保証がないため、必ずしも2 GiBの価値はありません。たとえ短期的にそれを行ったとしても、OSが「HM、あなたは実際にそれで何もしていない、他のプロセスはそれをもっと必要としている」と判断し、ページアウトするため、プロセスのワーキングセットが後で減少することがあります。
割り当て「チャンク」のサイズを大きくしすぎて、それに応じてチャンクの数を減らします。各割り当ては事実上連続している必要があるため、すぐに失敗します。たとえば、4 GiBアドレス空間で7つの512 MiBチャンクを見つけようとすると、失敗する可能性があります。
d(irty)の代わりにl(eak)オプションを使用すると、プログラムは仮想空間を割り当てますが、それを参照することはありません。これにより、「使用可能な」RAMが大幅に減少することはありません。
(d(irty)オプションは、x86 / x64ページテーブルエントリの「ダーティページビット」から名前を取得します。これは、対応する仮想ページが「変更」スタイルオペランドでアクセスされるときに設定されます。これは、プロセスワーキングセットからページを削除する必要がある場合、ページを他の目的に使用する前にその内容をどこかに保存する必要があることを示すWindowsの指示です。エビクション直後の「変更されたページリスト」。そこから、Windowsはそれらをそれぞれのバッキングストアに書き込みます。
これらのテストが上記のように機能するには、十分な「コミット」が必要です(このオプションはかなりの量のRAMを使用していませんが、l(eak)オプションでも)。具体的には、テストを開始する前に、「コミット制限」は「コミット料金」より少なくとも2 GiB(または割り当てている量が大きい)でなければなりません。これは、d(irty)だけでなくl(eak)オプションを使用している場合でも適用されることに注意してください。この制限に達すると、「システムのメモリが不足しています」ポップアップなどが表示されます。解決策は、もちろん、RAMを追加するか、ページファイルの設定を増やすことです。