12

私のWindowsXPタスクマネージャーでは、一部のプロセスが[メモリ使用量]列にVMSizeよりも高い値を表示します。たとえば、私のFirefoxインスタンスは、memの使用量として111544 K、VMSizeとして100576Kを示しています。

タスクマネージャーのヘルプファイルによると、Mem Usageはプロセスのワーキングセットであり、VMSizeは仮想アドレス空間のコミットされたメモリです。

私の質問は、プロセスのコミットされたページ数がAで、同じプロセスの物理メモリ内のページ数がBである場合、常にB≤Aである必要はありませんか?プロセスごとの物理メモリ内のページ数は、コミットされたページのサブセットではありませんか?

それとも、これはプロセス間でのメモリの共有と関係がありますか?説明してください。(おそらく、「ワーキングセット」の私の定義は的外れです)。

ありがとう。

4

6 に答える 6

17

仮想メモリ

プログラム (Oracle など) が起動時に 100 MB のメモリを割り当てたと仮定します。追加の物理ページやディスク ページは変更されませんが、VM のサイズは 100 MB 増加します。つまり、VM はメモリ ブック キーピングに他なりません。

利用可能な物理メモリ + ページング ファイル メモリの合計は、システム内のすべてのプロセスが割り当てることができる最大メモリです。システムがこれを行うのは、プロセスが割り当てられたすべてのメモリを実際に消費し始めた場合に、OS が必要な実際の物理ページをいつでも提供できるようにするためです。

プライベート メモリ

プログラムが 10 MB のデータをその 100 MB にコピーすると、OS はそれらのアドレスに対応するプロセスにページが割り当てられていないことを感知し、10 MB 相当の物理ページをプロセスのプライベート メモリに割り当てます。(このプロセスはページ フォールトと呼ばれます)

ワーキング セット

定義 : ワーキング セットは、プログラムによって最近使用されたメモリ ページのセットです。

この時点で、これらの 10 ページがプロセスのワーキング セットに追加されます。その後、プロセスがこのデータを以前に割り当てられた別の 10 MB キャッシュにコピーすると、他のすべては同じままですが、古いページがワーキング セットにない場合、ワーキング セットは再び 10 Mb 増加します。しかし、これらのページが既にワーキング セットにある場合は、すべて問題なく、プログラムのワーキング セットは同じままです。

ワーキング セットの動作

プロセスが最初の 10 ページに二度と触れないことを想像してみてください。その場合、これらのページはプロセスのワーキング セットから切り取られ、OS がより頻繁に使用される他のページを取り込めるようにページ ファイルに送信される可能性があります。ただし、差し迫ったメモリ不足の要件がない場合は、このページング操作を実行する必要はなく、OS はメモリが豊富であるかのように動作できます。この場合、ワーキング セットは単にこれらのページを残すだけです。

ワーキング セット > 仮想メモリはいつですか

ここで、同じプログラムが 100 Mb のメモリをすべて割り当て解除したとします。プログラム VM のサイズはすぐに 100 MB 縮小されます (VM = すべてのメモリ割り当て要求の記録を保持していることを思い出してください)。

ワーキング セットは、これによって影響を受ける必要はありません。これは、最近アクセスされた 10 Mb 相当のページが変更されないためです。したがって、これらのページは、OS が必要なときにいつでも再利用できますが、プロセスのワーキング セットに残ります。

これにより、実質的に VM < ワーキング セットが作成されます。ただし、より多くのメモリを消費する別のプロセスを開始し、ワーキング セット ページが OS によって回収されると、これは修正されます。

于 2008-10-31T09:21:53.887 に答える
3

File mapping

Very common way how Mem Usage can be higher than VM Size is by using file mapping objects (hence it can be related to shared memory, as file mapping is used to share memory). With file mapping you can have a memory which is committed (either in page file or in physical memory, you do not know), but has no virtual address assigned to it. The committed memory appears in Mem Usage, while used virtual addresses usage is tracked by VM Size.

See also:

What does “VM Size” mean in the Windows Task Manager? on Stackoverflow

Breaking the 32 bit Barrier in my developer blog

Usenet discussion Still confused why working set larger than virtual memory

于 2008-10-31T11:23:42.627 に答える
3

XP のタスク マネージャは単純に間違っています。編集: もしあなたが私を信じていないなら (そして誰かが信じていないのは、彼らがこれに反対票を投じたからです)、Firefox 3 のメモリ使用量を読んでください。私は引用します:

Windows XP でメモリ使用量を見ている場合、数値はそれほど大きくはありません。理由: Microsoft は、XP と Vista の間で「プライベート バイト」の意味を (より良い方向に) 変更しました。

MSが混乱したようですね。それが壊れている場合にのみ、そのようなものを変更します。

代わりにProcess Explorerを試してください。タスク マネージャーが「VM サイズ」とラベル付けするもの、プロセス エクスプローラー (より正確には) は「プライベート バイト」とラベル付けします。また、Process Explorer では、ご想像のとおり、ワーキング セット (およびプライベート バイト) は常に仮想サイズ以下です。

于 2008-10-31T07:24:09.910 に答える
1

メモリ使用量は、現在プロセスに割り当てられている電子メモリの量です。

VM サイズは、プロセスに現在割り当てられている仮想メモリの量です。

それで ...

  • 電子的にのみ存在するページは、メモリ使用量のみを増加させます。
  • ディスク上にのみ存在するページは、VM サイズのみを増加させます。
  • メモリとディスクの両方に存在するページは、両方を増やします。

説明するいくつかの例:

現在、私のマシンでは、iexplore のメモリ使用量は 16,000K で、VM サイズは 194,916 です。これは、Internet Explorer が使用するメモリのほとんどがアイドル状態であり、ディスクにスワップ アウトされており、メイン メモリにはごく一部しか保持されていないことを意味します。

98,984K のメモリ使用量と 98,168K の VM サイズを持つ mcshield.exe とは対照的です。ここでの私の結論は、McAfee AntiVirus がアクティブであり、多くのメモリが使用されているということです。かなり長い間 (起動してから終日) 実行されているため、98,168K の VM サイズのほとんどは電子メモリのコピーであると予想されますが、タスク マネージャーにはこれを確認するものは何もありません。

于 2008-10-31T05:32:48.887 に答える
0

The Memory Shell Gameで説明が見つかるかもしれません

ワーキング セット(A) – これはプロセスの (コミットされた) 仮想メモリ ページのセットであり、物理 RAM に配置されます。これらのページは完全にプロセスに属しています。ワーキング セットは、「これらのページで現在/最近作業している」リストのようなものです。

仮想メモリ– これは、オペレーティング システムがアドレス指定できるメモリです。物理 RAM またはハード ドライブの容量に関係なく、この数はプロセッサ アーキテクチャによって制限されます。

コミットされたメモリ– アプリケーションが仮想メモリ ページにアクセスすると (読み取り/書き込み/プログラムによるコミット)、そのページはコミットされたページになります。これは、物理メモリ ページによってサポートされるようになりました。これは通常、物理 RAM ページですが、最終的にはハード ディスク上のページ ファイル内のページになるか、ハード ディスク上のメモリ マップ ファイル内のページになる可能性があります。メモリ マネージャーは、仮想メモリ ページから物理ページへの変換を処理します。仮想ページは物理 RAM に配置でき、その隣のページはページ ファイルのハード ドライブに配置できます。

BUT: PF (Page File) Usage - これは、システム上でコミットされたページの総数です。実際にページ ファイルに書き込まれる数はわかりません。コミットされたすべてのページを同時にページ ファイルに書き出す必要がある場合に、ページ ファイルがどれだけ使用されるかを示すだけです。

したがって、B > A...

B が「メモリの使用」または PF の使用を表すことに同意する場合、問題はそれが実際に潜在的なページの使用を表しているという事実から生じます。Xp では、この潜在的なファイル スペースは、プログラムが持つ仮想メモリ ページを割り当てる場所として使用できます。頼んだのに使わなかった…

于 2008-10-31T05:12:34.450 に答える
0

おそらくメモリの断片化が原因です。プロセスが 1 オクテットを割り当てる場合、VMSize では 1 オクテットとしてカウントされますが、この 1 オクテットには物理ページ (Windows オペレーティング システムでは 4K) が必要です。メモリの割り当て/解放後、プロセスに最初のオクテットから 4K 以上離れた 2 番目のオクテットがある場合、この 2 番目のオクテットは常に 1 番目とは別の物理ページに格納されます。したがって、VM サイズ カウントは 2 オクテットですが、メモリ使用量は 2 ページ == 8K です。

したがって、MemUsage が VMSize よりも大きいという事実は、プロセスが多くの割り当てと割り当て解除を行い、メモリを断片化していることを示しています。これは、プロセスがかなり前に開始されたことが原因である可能性があります。または、最適化の余地があります;-)

于 2010-03-06T17:36:19.513 に答える