• 締切済み

コミット済みメモリの内訳を知る方法

タスクマネージャに「コミット済み」という項目がありますが、この内訳を知りたいです。つまり、どのプロセスがどれだけメモリをコミットしているかを知りたいです。 タスクマネージャの詳細タブ表示での「コミットサイズ」や、リソースモニターのメモリでの「コミット」を合計してみてもそんなに大きな値にはならず、別の何かがメモリをコミットしたまま放置しているのでしょうか? ノートPCもデスクトップPCも、ほとんどシャットダウンせずにスリープor休止で使用しています。すると、タスクマネージャ上のコミット済みのサイズが少しずつ増えていきます。例えば、クリーンブート直後にタスクマネージャを見ると2.5/8.9GBとなっていますが、何日もシャットダウンせずに使っていると、すべてのアプリを閉じても6.xとか7.xGBになります。最悪8.7GBとかになって、アプリの起動に差支えが出る場合もあります。 ウィルスのせいという意見もあろうかと思いますが、2台別々のPCでも同様ですし、クリーンインストール直後でも同様でしたので、それ以外の可能性を知りたいです。 「コミット済み」の内訳を知る方法があれば、よろしくお願い致します。

みんなの回答

回答No.2

因みに、ページファイル(仮想メモリ)が肥大化しないようにする唯一の方法は「コミット済みの左側の数値よりも、大きい容量の物理メモリを搭載する」だけです。 使用するメモリの瞬間最大風速が、物理メモリ容量よりも小さければ、仮想メモリは使われません(物理メモリ(実メモリ)で足りてる訳だから、当然) 仮想メモリが使われないと言う事は、ページファイルが肥大化しないと言う事です。 ページファイルが肥大化しなければ、ページファイルを最適化する事もありません。 ページファイルを最適化する事が無ければ、それが原因でアプリが起動出来ないほど重くなる事もありません。 因みに、ページファイルは「必要メモリ量が物理メモリ容量を超えた場合に、必ず増大」します。 あるプロセスがメモリを要求して、ページファイルが1ギガ増大した場合、そのプロセスが終了しても、ページファイルの大きさは変わりません。 数時間後に「同じこと」が繰り返されると、同じように「1ギガ増大」します。 なので、この状態が永続すると「ページファイルが定期的に1ギガづつ増大する」のです。 そのため「ずっと電源を入れっ放しにしている」と、実メモリの不足量が「ほんの少し」であっても、ページファイルがどんどん肥大化していくのです。 で、限界まで肥大化すると、ページファイルの最適化が入って、激重になるのです。 これが「質問者さんのPCの状態」です。 解消には「物理メモリの増設」が必要です。

回答No.1

>何日もシャットダウンせずに使っていると、すべてのアプリを閉じても6.xとか7.xGBになります。最悪8.7GBとかになって コミット済みの数値の左側は「実際に必要としていたメモリの瞬間最大風速」です。 瞬間最大風速ですから、最も高い値を記録したら、下がる事はありません。 もちろん、現時点での個々のプロセスの使用メモリサイズを合計しても、その数字にはなりません。 当然、アプリをすべて終了しても、数値は下がりません。 因みに、右側の数値は「実メモリサイズ+仮想メモリサイズ」です。 >アプリの起動に差支えが出る場合もあります。 ページファイル(仮想メモリとしてHDDに作られたファイル)は、使用し終わっても最適化されないので、どんどん肥大化していきます。 最大まで肥大化すると「未使用になった残骸部分のお掃除」つまり「ページファイルの最適化」が始まります。 「ページファイルの最適化」は、数ギガあるファイルを作り直ししますから、これが始まると、アプリの起動に差し支える場合があります。 アプリの起動に支障をきたしているのは、コミット済みの左側の数値が大きくなったからではなく、ページファイルが最大まで肥大化して、最適化処理が入ってしまったからです。 Windowsを再起動すれば、ページファイルのサイズはゼロに戻りますから、次にページファイルが最大まで肥大化するまで余裕が出来るので、PCが重くならずに済むのです。 >つまり、どのプロセスがどれだけメモリをコミットしているかを知りたいです。 上記のように、どのプロセスがどれだけメモリをコミットしているか知っても、何の解決にもなりません。 >「コミット済み」の内訳を知る方法があれば、よろしくお願い致します。 内訳を知っても、何の解決にもなりません。

haniriito
質問者

お礼

chie65535さん、ありがとうございます。 > コミット済みの数値の左側は「実際に必要としていたメモリの瞬間最大風速」です。 > 瞬間最大風速ですから、最も高い値を記録したら、下がる事はありません。 それは、Windows XPのタスクマネージャにある「コミットチャージ」の最大値のことではないでしょうか? > 当然、アプリをすべて終了しても、数値は下がりません。 本当ですか!? いくつかのアプリを終了したらコミット済みの左側の値は少しは下がりました。Visual StudioとCode Composer Studio(これも開発ツール系)、それからテキストエディタとかを終了すると、8.1/9.6GB→5.3/9.6GBになったんですが・・・。 私のPCが2台とも異常なんでしょうか。 ただし、元の状態(起動時の状態)にまでは戻りません。完全には戻らないのは承知していますが、全アプリを終了させた時のコミット済みの値は、シャットダウンさせずに使い続けているうちに少しずつ"底上げ"されているようです。今回は、その底上げの理由(or原因プロセス)が知りたいです。 > ページファイル(仮想メモリとしてHDDに作られたファイル)は、使用し終わっても最適化されないので、どんどん肥大化していきます。 ページファイルそのもののサイズが増える・増えないということは、今回は問題にしていないです。 > 最大まで肥大化すると「未使用になった残骸部分のお掃除」つまり「ページファイルの最適化」が始まります。 「ページファイルの最適化」と、私の質問の根底にある「コミット済みメモリの増減」との関係が読み取れなかったのですが、そこを教えていただけませんか?「未使用になった残骸部分のお掃除」と表現されていますが、それはつまり一時はコミット済みとなったページが解放される→コミット済みメモリが減る、ということでしょうか? 私がイメージする「最適化」は、断片化した状態(使用しているところとしていないところ、虫食い状態?)を整理して、使用している部分を一箇所に集める、というような意味合いとして理解しています。 それともガベージコレクションのような動作を意味しているのですか? メモリをコミットしてページファイルに移動させたものって、そのプロセスの終了とともに解放されるものと思っていたのですが、違うのでしょうか?ページファイル中の割り当て管理のアルゴリズムは知る由もないですが、マーク&スイープのようなアルゴリズムであれば遅れて解放されるということは有り得そうですね。 > アプリの起動に支障をきたしているのは、コミット済みの左側の数値が大きくなったからではなく、ページファイルが最大まで肥大化して、最適化処理が入ってしまったからです。 すみません、私の説明が不十分でした。 「アプリの起動に支障が出る」というのは、遅くなるとかそういうことではなくて、アプリが起動できなくなる、ウィンドウが正しく表示されなくなる、メニューの項目が減る、などの機能的なものを意味しています。 > >つまり、どのプロセスがどれだけメモリをコミットしているかを知りたいです。 > 上記のように、どのプロセスがどれだけメモリをコミットしているか知っても、何の解決にもなりません。 なぜそう言い切れるのでしょう?理由を教えて下さい。 私は、次のように考えています。 ○特定のプロセスが大量にメモリをコミットしているなら、そのプロセスを再起動してメモリを解放させる。 ○そのプロセスに不具合があって(例えばメモリリークのようなもの)それが既知の問題でアップデートが用意されれているなら、アップデートの適用で解決する可能性がある。 ○そのプロセスが本当に必要なものでなければ、はじめから起動させない方法を考える。あるいは、同等の別手段に切り替える方法を考える。 プロセス=単純なアプリもあれば、システムに根ざしたサービスの可能性もあるので、なんでもかんでもできるわけではありませんが、せめて特定すれば何らかの対抗措置をとれる可能性があると思います。 引き続き、ご意見をよろしくお願い致します。

関連するQ&A