2014-03-11 02:46:08 +0000 2014-03-11 02:46:08 +0000
104
104

Windowsタスクマネージャが報告するメモリ使用量の合計が、すべてのプロセスのメモリ使用量の合計よりもはるかに高いのはなぜですか?

タスクマネージャーは、私の6GBの合計の90%のメモリ使用量を表示していますが、どのプロセスも250MB以上のRAMを使用しておらず、実行中のすべてのプロセスのRAM使用量の合計は2GB未満です。試してみました。

  • Windows 8 タスクマネージャの「プロセス」タブの「メモリ」列の数字を見る。
  • タスクマネージャの「詳細」タブの「作業セット」、「プライベート作業セット」、「共有作業セット」、「コミットサイズ」の列を見る。
  • プロセスエクスプローラーで同様のメモリ関連の列を見る。
  • Sysinternals RAMMapを実行してみましたが、低メモリの危機に陥っている間、起動時にクラッシュしてしまいます。問題を解決すると、RAMMap は正常に動作しますが、その時点では手遅れです。

すべてのメモリ使用量がかなり少ないことを示しています。

インターネット上には、様々なバージョンの Windows でこの質問をしている人がたくさんいます。その中には、ソフトウェアを再インストールすることで低メモリ問題を解決している人もいれば、最初からウィンドウズを再インストールすることで解決している人もいます。私は、これらすべてに共通している一般的な質問に対する答えを探しているのですが、他の場所では決して答えられないようです。

1.どのように数えようとしても、リストされているすべてのプロセスで使用されているメモリよりも、使用されているメモリの合計の方がはるかに高いのはなぜですか? 2. どのプログラムがメモリを使用しているかを知らずに、どうやってウィンドウズがメモリが使用されていることを「知る」ことができるのでしょうか? 3. メモリを使用しているにもかかわらず、リストに表示されないプロセスがあるかもしれません。 4. 使用されているメモリについてより多くの情報を提供してくれるソフトウェアはありますか?

私自身の問題に関する詳細: Windows 8.1にアップグレードしてから、ログインするとすぐに問題が発生します。私はどのプログラムを実行するとすぐにメモリを使い果たしてしまいます。私はプロセスエクスプローラでiexplore.exeのいくつかのインスタンスが実行されていることに気づきましたが、明らかに自動的に起動していました。ある特定のインスタンスは数MBのRAMしか使用していなかったが、何億ものページフォルトが表示されていた。気まぐれでその特定のプロセスを終了させたところ、メモリ使用量がすぐに70%減少しました。

一つの具体的な質問が出てきました。

  • 本来なら数MBしか使わないはずのプロセスをどうやって殺したら数GBのメモリが解放されるのか?

  • 数MBしか使用していないはずのプロセスをどのようにして数GB解放することができるのか?

  • Windowsを再インストールする以外に、コンピュータを再起動するたびにこのようなことをしなくて済むようにするにはどうしたらいいでしょうか?

回答 (1)

6
6
6
2014-03-11 05:23:42 +0000

ところで、「記憶」という言葉は使わないようにしましょう。多くの混乱を招くからです。物理メモリを意味するのであれば、「物理メモリ」と言い、「RAM」と言いましょう。仮想メモリを意味するならば、そう言います。バッキングストアを意味するのであれば、そう言ってください。

どうして、どうやって数えようとしても、リストされているすべてのプロセスで使用されたメモリよりも、使用されたメモリの合計の方がはるかに高いのでしょうか?

オペレーティングシステムは、やむを得ない場合を除き、物理メモリ(RAM)を無駄にしないからです。

どのプログラムがメモリを使用しているかを知らずに、ウィンドウズがメモリが使用されていることを「知る」ことができるのでしょうか?

どのプログラムも使っていないからです。例えば、終了したばかりのプログラムのコードが入っているメモリを考えてみましょう。どのプログラムもそれを使っていません。しかし、そのメモリは無料ではなく、(プログラムが再び実行された場合に)役に立つかもしれないデータが含まれているため、そのメモリは使用されています。

どのようなプロセスがメモリを使い切っている可能性がありますか?

プロセスが使用していません。

使用されているメモリについてもっと情報を提供してくれるソフトウェアはありますか? (http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx) [ RAMMap ]0x3& で可能です。

可能性としては、RAMが使用されているか、または無駄になっているかの2つしかありません。明らかに、前者の方が良いです。4GBのマシンでは、明日6GBを使うために今日2GBを使うことはできません。4GB のマシンでは、明日 6GB を使うために今日 2GB を使うことはできません。今使ってもいいし、後で使ってもいいのです。

本来なら数MBしか使わないはずのプロセスを殺すことで、どうやって数GBが解放されるのでしょうか?

あなたが不足しているのはバッキングストアであって、物理メモリではありません。

物理メモリではなくバッキングストアが不足しています。

プロセスが使用しているのは数MBの物理メモリだけですが、OSはそのために数GBのバッキングされた仮想メモリを予約しなければならなかったかもしれません。例えば、あるプロセスが2GBのファイルの書き込み可能なプライベートメモリマッピングを作成したとします。OSは、そのマッピングの全バイトに書き込みを行う可能性があるため、そのプロセスのために2GBのバックアップされた仮想メモリを確保しなければなりません。また、どれにも書き込まないかもしれません。だからこそ、良いサイズのページングファイルが必要なのです。

最近のオペレーティングシステムは、決して現金化されることのない(RAMを必要とする)小切手(バッキングストアを約束する)をたくさん書き込んでいます。銀行にお金がたくさんあっても(RAMが空いていても)小切手を書き続けることはできません(バッキングストアを約束しているのと同じくらいのバッキングストアを約束している)。ページングファイルは、OSが小切手を書き続けることができるように、バッキングストアを追加します。

関連する質問

8
19
13
6
9