Windows が VirtualBox で使用されている RAM を適切に報告しないのはなぜですか?

Windows が VirtualBox で使用されている RAM を適切に報告しないのはなぜですか?

そこで、好奇心から、Windows 7 VM (3 GB RAM 割り当て済み) の実行中の RAM 使用量を確認することにしました。結果を見て驚きました。なぜこのような結果になったのか疑問に思っています。

ホスト マシン (Win 8.1) のタスク マネージャーには次のように表示されます。ホスト プロセス エクスプローラー

これはChromeがどれだけメモリを食っているかを示しているに過ぎません。とにかく、VirtualBoxマネージャが75MBのRAMしか使用していないことに注目してください。まあ、これは妥当なことです。結局のところ、これはマネージャーVM 自体ではありません。しかし、待ってください。これらの数字 (そこに表示されていないものを合計しても) は、現在の RAM 使用量 (パフォーマンス タブで報告されている 9 GB) に加算されません。ゲスト マシンが現在 1.5 GB を使用していることを考えると、リストのもう少し上に表示されると予想されます...

さて、別のツールを試してみましょう:RAMマップ

まず、RAMMap からのスクリーンショットを 2 つ紹介します。ここに画像の説明を入力してください ここに画像の説明を入力してください

まあ、「プロセス プライベート」の部分は、約 3 GB のように見えます (ざっと見た限りでは桁違いですが)。しかし、それでも、Chrome 以外で 100 MB を超える RAM を占有するものはありません。

ああ、ねえ、これを見てください:ここに画像の説明を入力してください

ようやくその場所が見つかったようですが、これは何でしょうか? VBox はゲストの RAM を RAM にロードし続けるファイルのように扱いますか? これは... まったく別のものですか? なぜ Windows の通常のタスク マネージャー ツールでこのことが通知されないのでしょうか?

TL;DR: Windows、RAM使用量をすべて表示しない

答え1

RAMMapでは以下のように表示されますドライバーがロックされましたVM に割り当てた 3GB の使用状況を確認します。

ここに画像の説明を入力してください

VM はこのメモリを使用するため、他のツールはそれを使用できません。

答え2

TL;DR: プロセスはメモリを使用していましたが、メモリの使用を停止しました。Windows はまだそれを処理するのが面倒です。

Windows では、プロセスが RAM を要求し、その使用をある程度制御していない限り、タスク マネージャーのプロセスに RAM の使用状況は表示されません。OS がプロセスにマッピングをバックアップするために RAM を提供し、それらのマッピングが破棄可能な場合、プロセスに割り当てられたマッピングを表示すると混乱が生じます。他のプロセスによってこれらのマッピングがバックアップされなくなるため、プロセスの使用状況の数値が大きく変動することになります。

Windows がこのプロセスに 2GB の RAM を割り当てたことを気にする必要は特にありません。Windows がそれを要求したからではなく、単にそのメモリをより有効に活用する方法が思いつかなかったからです。そしてもちろん、Windows はメモリを他の用途に使用する必要がある場合、いつでもその RAM を取り戻すことができます。

プロセスが実際にメモリを使用する場合、そのメモリはワーキング セットの一部とみなされ、プロセスに割り当てられます。Windows がここでクリーンアップを行い、プロセスが後でメモリを使用した場合、Windows はメモリを再度割り当てる必要があります。したがって、後でさらに多くの作業が必要になる可能性が高いため、今余分な作業を行うのは意味がありません。

関連情報