Windowsタスクマネージャが報告するメモリ使用量の合計が、すべてのプロセスのメモリ使用量の合計よりもはるかに高いのはなぜですか?
タスクマネージャーには、私の6GBのメモリ使用量の合計が90%と表示されていますが、どのプロセスも250MB以上のRAMを使用しておらず、実行中のすべてのプロセスのRAM使用量の合計は2GB未満です。試してみました
- Windows 8 タスクマネージャーの「プロセス」タブの「メモリ」欄の数字を見る
- タスクマネージャーの「詳細」タブの「作業セット」、「プライベート作業セット」、「共有作業セット」、「コミットサイズ」の列を見る
- プロセスエクスプローラでメモリ関連の類似カラムを見る
- SysinternalsのRAMMapを実行してみましたが、低メモリの危機に陥っている間に起動時にクラッシュしてしまいます。問題を解決すると、RAMMap は正常に動作しますが、その時点では手遅れです
どれもかなり少量のメモリを使用していることがわかります
インターネット上には、様々なバージョンのWindowsを使って、この質問のバリエーションを尋ねている人がたくさんいます。その中には、ソフトウェアを再インストールすることで低メモリの問題を解決している人もいれば、ゼロからウィンドウズを再インストールすることで解決している人もいます。私は、これらすべてに共通する一般的な質問に対する答えを探していますが、他の場所では決して答えられないようです
- どうやって数えようとしても、使用されたメモリの合計が、リストされているすべてのプロセスで使用されたメモリよりもはるかに高いのはなぜですか?
- どのプログラムがメモリを使用しているかを知らずに、ウィンドウズがメモリが使用されていることを “知る “ことができるのでしょうか?
- メモリを使い切る可能性のあるプロセスで、リストに表示されないものはありますか?
- 使用済みメモリについてもっと詳しい情報を提供してくれるソフトはありますか?
私自身の問題特有の詳細:Windows 8.1にアップグレードしてから、ログインするとすぐに問題が発生します。何かプログラムを実行するとすぐにメモリを使い果たしてしまいました。プロセスエクスプローラでiexplore.exeのインスタンスがいくつか実行されていることに気づきましたが、どうやら自動的に起動しているようでした。ある特定のインスタンスは数MBのRAMしか使用していなかったが、何億ものページフォルトが表示されていた。気まぐれでその特定のプロセスを終了させたところ、メモリ使用量がすぐに70%減少しました
一つの具体的な質問につながる
- 数MBしか使っていないはずのプロセスをどうやって殺して、数GBの空き容量を確保するんだ?
そして、(おそらく難しいと思われる)ボーナス問題
- Windowsを再インストールすることで、コンピュータを再起動するたびにこのようなことをしないようにするにはどうすればいいのでしょうか?
115 Josh 2014-03-11
ところで、「記憶」という言葉は使わないようにしましょう。多くの混乱を招くからです。物理メモリを意味するのであれば、「物理メモリ」と言い、「RAM」と言いましょう。仮想メモリを意味するならば、そう言います。バッキングストアを意味するのであれば、そう言いましょう
どうやって数えようとしても、使用されたメモリの合計が、リストされているすべてのプロセスで使用されたメモリよりもはるかに高いのはなぜですか?
オペレーティングシステムは、やむを得ない場合を除き、物理メモリ(RAM)を無駄にしないからです
どのプログラムがメモリを使用しているかを知らずに、ウィンドウズがメモリが使用されていることを “知る “ことができるのでしょうか?
なぜなら、どのプログラムも使っていないからです。例えば先ほど終了したプログラムのコードが入っているメモリを考えてみましょうどのプログラムもそれを使っていません。しかし、そのメモリは無料ではなく、(プログラムが再び実行された場合に)役に立つかもしれないデータが含まれているため、使われています
メモリを使い切る可能性のあるプロセスが、リストに表示されるようになったのはどのようなものでしょうか?
プロセスでは使用されません
使用済みメモリについてもっと詳しい情報を提供してくれるソフトはありますか?
RAMMapでできることです
可能性は2つしかありません、RAMを使用することができるか、それが無駄になる可能性があります。明らかに、前者の方が良いです。4GBのマシンでは、明日6GBを使うために今日2GBを使うことはできません。もしあなたが「今は無料で欲しいから後で使える」と考えているなら、それは忘れてください。今使ってもいいし、後で使ってもいい
数MBしか使っていないはずのプロセスをどうやって殺して、数GBの空き容量を確保するんだ?
物理メモリではなくバッキングストアが不足しています。空きの物理メモリは十分にありますが、OSがバッキングを必要とする可能性のある仮想メモリを割り当て続けるためのバッキングストアが不足しています
このプロセスは数MBの物理メモリしか使用していませんでしたが、OSはそのために数GBのバックアップされた仮想メモリを予約しなければならなかったかもしれません。例えば、あるプロセスが2GBのファイルの書き込み可能なプライベートメモリマッピングを作成したとします。OSは、そのマッピングの全バイトに書き込みを行う可能性があるため、そのプロセスのために2GBのバックアップされた仮想メモリを確保しなければなりません。また、どれにも書き込まないかもしれません。そのため、良いサイズのページングファイルが必要になります
最新のオペレーティングシステムは、現金化されない(RAMが必要)小切手をたくさん書きます(約束されたバッキングストア)。銀行にお金がたくさんあっても(無料のRAM)、すでに現金化されないかもしれない、あるいは現金化されないかもしれない大きな小切手をたくさん書いている場合は、小切手を書き続けることはできません(今持っているのと同じくらいのバッキングストアを約束しています)。ページングファイルは、OSが小切手を書き続けることができるように、バッキングストアを追加します
7 David Schwartz 2014-03-11