8

Windows のメモリ管理スキームは非常に複雑です。メモリの問題をより正確に診断できるように、よりよく理解しようとしています。

たとえば、C++ アプリケーション (SysInternal の Process Explorer 内) は、1.4GB の「仮想サイズ」、400MB の「プライベート バイト」、および 366MB の「ワーキング セット」を示しています。

いくつかの調査を行ったところ、次の質問が見つかりました: プライベート バイト、仮想バイト、ワーキング セットとは何ですか?

これは素晴らしい読み物ですが、いくつかのことはまだ合計されていません。具体的には、投票数が最も多かった回答は、Virtual Bytes にスタンバイ リストが含まれていることを示しています。これらが何であるかはよくわかりません。また、私が行った調査では、友好的とは言えない説明が得られました。私の最大の質問は次のとおりです。ページをスタンバイ リストに移動すると、アプリケーションの仮想アドレス空間にどのような影響がありますか? 言い換えれば、仮想サイズが他のどのサイズよりもはるかに大きい場合、その違いは断片化されたメモリですか?

誰かがこれをもう少しよく理解するのを手伝ってくれるなら、私はそれを大いに感謝します. 前もって感謝します!

4

2 に答える 2

9

単純なシナリオでは、しばらく使用されていないページがプロセスから削除され、クリアされて空きリストに追加されるため、他のプロセスがより多くのメモリが必要になったときにそのページを利用できます。

スタンバイリストを使用すると、ページは変更されずにプロセスから削除され、スタンバイリストに追加されます。同じプロセスでページが必要になった場合は、すぐに返されます。別のプロセスがより多くのメモリを必要とする場合、ページはクリアされ、そのプロセスに渡されます。

したがって、要するに、メモリマネージャは、最初にそれを使用していたプロセスがそれを元に戻したい場合に備えて、初期化されたメモリを保持します-しかし、他の誰かがより多くのメモリを必要とする場合は、代わりにそれを取得します。

于 2012-06-18T19:32:26.693 に答える
0

スタンバイリストは、実際には現在キャッシュされているメモリのページのリストですが、他のアプリケーションのためにメモリを解放するために破棄することができます。

その場合、ページをスタンバイリストに移動しても、リスト上のメモリはプロセスによって要求されないため、アプリケーションの仮想アドレス空間には影響しませんが、プロセスは必要に応じてすばやく再要求できます。

于 2012-06-18T19:30:56.760 に答える