空き RAM があっても Windows がプロセスを強制終了したり、メモリの割り当てを許可しないのはなぜですか

空き RAM があっても Windows がプロセスを強制終了したり、メモリの割り当てを許可しないのはなぜですか

この質問は前回の質問に続くものですWindows 7 でメモリ使用量を正確に分析するにはどうすればよいですか?

実際のプロセスが物理メモリ (プライベート ワーキング セット) の約 40% のみを消費し、残りは何らかの理由でオペレーティング システムによって消費されるシステムでは、ゼロ化されたメモリがまだ約 800 MB あるにもかかわらず、カーネルはプロセスがさらにメモリを割り当てることを許可しないのはなぜですか?

メモリ

カーネル設定を変更して、オペレーティング メモリを 100% 利用できるようにすることは可能ですか? 現在、タスク マネージャーでメモリ使用量が 80% に達すると、カーネルは 100% の場合のように動作します。これは、アプリケーションがクラッシュし始め、メモリを割り当てられなくなる限界だからです。これらの 20% を解放して、すべてのメモリを 100% まで利用できるようにするにはどうすればよいですか? これらの 20% が「予約済み」なのはなぜですか? また、何のために予約されているのですか? システムは、合計 4 GB の RAM を搭載した Windows 7 64 ビットです。パフォーマンス上の理由から、スワップは無効になっています。(ハード ドライブが非常に遅く、スワップを有効にすると、コンピューターがほとんど使用できなくなります)

答え1

プライベート ワーキング セットは、プロセスのメモリ全体ではありません。

プライベート バイト、ワーキング セット、仮想サイズ

仮想サイズとは、プログラムの実行に必要となる可能性のあるメモリの総量です。多くのプログラムは割り当てられた仮想メモリをすべて使用しませんが、要求された操作を実行するのに十分なメモリがあることを確認するために仮想メモリを要求します。また、メモリ マップ ファイルや、メモリとして実行するのが簡単なその他のもの (共有メモリ スペース、IPC) にも使用されますが、プライベート メモリを要求するプロセスとは厳密には関係ありません。

これを機能させるには、OS が次のいずれかを実行する必要があります。

  • メモリが利用可能であることを保証する
  • メモリ要求を拒否します (ほとんどの場合、アプリケーションがクラッシュ/終了して戻ります)

通常、システムはこの未使用の仮想メモリをページ ファイルに割り当て、実際に使用される部分のみが物理 RAM を占有します。ただし、ページ ファイルを無効にすると、OS はこれらの保証を提供するために物理メモリを使用するように強制されます。つまり、別のプロセスに割り当てることができないゼロ化されたメモリ ページが大量に発生することになります。

ページファイルがある場合、プロセスは物理メモリの容量Working SetPrivate Bytes容量の間のどこかでしか必要としません。ページファイルを無効にすると、Windowsしなければならないメモリの全体Virtual Size量を割り当てるか、メモリ要求を拒否するかを選択します。(Windowsのリソースモニターでは、これはCommitWindowsがコミットその量の仮想メモリをプロセスに割り当てます。

答え2

リソース モニターには、実際に空きメモリがあるかどうかが表示されます。

リソースモニター

こちらもご覧ください8GB RAM のマシンでページファイルを削除すると、何かメリットやデメリットがありますか?

関連情報