MetalLover さん、こんにちは。
Answers をご利用いただきまして、ありがとうございます。
いろいろ調べたのですが、残念ながらこちらでは関連する有効な情報は見つかりませんでした。
仮想メモリやワーキングセットなどに関する質問の場合、Answers ではなかなか情報が集まりにくいのではと思います。
開発者や技術系のユーザーが多く利用される MSDN の フォーラム にも投稿いただくとより情報が集まってくるかもしれません。
今後とも Answers ご利用ください。
こんにちは。
WindowsVistaにおいて、「仮想メモリ」や「ワーキングセット」や「コミットサイズ」などのメモリ量を表す用語について、お聞きしたいと思います。
まず僕は、仮想メモリを、以下のように解釈しています。
「CPUはページング機能を使い、物理メモリを4KBの「ページ」という単位で多層化する。
この多層化という処理によって、搭載した物理メモリ以上に、メモリアドレスを割り当てることを可能にしている。こうして“仮想”的に生成されたメモリが「仮想メモリ」で、仮想メモリに対して割り当てられたアドレスが「論理アドレス」である。ウィンドウズXPをはじめとするウィンドウズOSが管理しているのは、この仮想メモリである。」
ワーキングセットは、以下のように解釈しています。
「プロセスが使用している物理メモリの量(ページアウトされていない部分)の事。
そのうち、プライベートワーキングセットは、特定のプロセス専用のメモリ量であり、
他のプログラムで使用できない。」
コミットサイズは、以下のように解釈しています。
「プロセスで使用している(コミットしている)仮想メモリの量。
これには、物理メモリからページアウトされたメモリも含まれる。」
以上の解釈で、おかしいと思う所があれば、指摘して頂きたいく思います。
さて、タスクマネージャを起動し、プロセスタブを開けると、以下のように、各プロセスのワーキングセットやコミットサイズなどが確認できます。
どのプロセスでも、プライベートワーキングセットが、コミットサイズよりも小さくなっている事が確認できます。
コミットサイズからプライベートワーキングセットを引いたメモリ量は、物理メモリからハードディスクにページアウト(スワップアウト)されたメモリ量を意味するのでしょうか?
もしそうだとすると、物理メモリの空きがフルに使われていない事になります。
なぜなら、タスクマネージャのパフォーマンスタブを見ると、以下のようになっていたからです。
見ての通り、物理メモリには、まだ約1GBの空きがあります。
ページアウトは、(キャッシュ済みを含めて)物理メモリの空き領域がなくなった場合に起こるのではないのでしょうか?
最後に、先程の画像の右端のフィールドは、ページフォールトなのですが、多いものだと7,000,000を超えるページフォールトがあるプロセス(iexplorer.exeなど)も
存在しました。
ページフォールトは、オペレーティングシステムやアプリケーションで必要なメモリのブロックを、物理メモリではなく、ハードディスク上のページファイルからフェッチする必要がある、インスタンス(オブジェクトの実態)の個数を示します。
なぜ、物理メモリにまだ十分なあきがあるのに、ページフォールトの値が大きいプロセスが存在するのでしょうか?
長くなりましたが、以上です。
よろしくお願い致します。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
MetalLover さん、こんにちは。
Answers をご利用いただきまして、ありがとうございます。
いろいろ調べたのですが、残念ながらこちらでは関連する有効な情報は見つかりませんでした。
仮想メモリやワーキングセットなどに関する質問の場合、Answers ではなかなか情報が集まりにくいのではと思います。
開発者や技術系のユーザーが多く利用される MSDN の フォーラム にも投稿いただくとより情報が集まってくるかもしれません。
今後とも Answers ご利用ください。
相澤様、御回答ありがとうございます。
相澤様には、他の質問でもお世話になっていますね。
ほんと助かります。
今回の質問は、かなり複雑なものだと思いますので、簡単に答えて下さる方は居られないと予想していました。
アドバイスを頂いたように、MSDNのフォーラムにも投稿してみようかと思います。