メモリが解放されない?

Anonymous
2013-10-15T16:34:20+00:00

Windows 8に固有の問題かどうかは分かりませんが、教えてください。

基本的にスリープや休止状態を使いシャットダウンはなるべくしないようにして使っているのですが、そうやって何日も使っているとアプリケーションが起動できなくなったり、起動してもダイアログやメニュが正しく表示されなくなったりして困っています。

そういうときにタスクマネージャで見てみると、メモリタブのメモリのコミット済みが異常に大きい値になっています。メモリが足りなくなっているのが、アプリケーションが起動できなくなっている理由ではないかと考えています。Windowsを再起動した直後は、こんなにコミット済みメモリは多くないです。せいぜい2.xGBか3.xGB程度なのですが、数日経過するとウィンドウアプリをすべて閉じてもコミット済みは7.4/8.6GBとかになっています。

もう少し調べてみると、どうも taskhostex.exe と explorer.exeの2つのプロセスがかなりのメモリを「コミット済み」にしていることが分かりました。試しにtaskhostex.exeをタスクマネージャから強制終了するとコミット済みメモリが2~3GBほど、explorerを強制終了すると1~1.5GBほど減ります。これらのプロセスが、メモリを大量に消費しているか、もしかしてメモリを解放しないままになっているのでしょうか?強制終了ではなく、これらのプロセスが使用するメモリ量を制限するか、安全に解放させる方法はありませんか?

また、ProcessExplorerを使用してtaskhostex.exeが提供しているタスクを調べてみると、Microsoft PlaySoundService Class/MsCtfMonitor Task handler/Wininet Cache task objectの3つの機能を提供しているようですが、このいずれかに問題があるのでしょうか?

ちなみにWindows ストアアプリは、まったく使用していません。使っているのは普通のデスクトップアプリばかりです。

この現象はメーカの違う2つのPCで確認しているので、固有の問題というわけではないと考えています。何か原因をご存知でしたら、教えていただきたいと思います。

よろしくお願いします。

(追記)

2台のPCで確認していますが、一方はWindows 8 64bitで、もう一方はWindows 8 Pro 64bitです。

搭載メモリはどちらも8GBです。

よろしくお願いします。

家庭向け Windows | 以前の Windows バージョン | パフォーマンスとシステムの失敗

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

61 件の回答

並べ替え方法: 古い順
  1. Anonymous
    2014-01-17T00:30:02+00:00

    情報ありがとうございます。現在は、調べる方法がない状態ですので、どんな些細な情報でもありがたいです。

    頂いた情報をキーワードにして調べてみると、海外では少し話題になっていますね>Realtekのドライバの問題。

    真偽のほどは分かりませんでしたが、「非ページプール」の値が大きくなるというのが、Realtekドライバのメモリリークの兆候のようですね。

    私の使っているPC2台はともにRealtekのGigabitEtherを持っていますが、該当しないようです。「コミット済み」が増えても、「非ページプール」は増えていないです。だいたい100~150MByteの範囲で収まっていて、特に問題はなさそうです。

    それに、私のところでは「Explorerやtaskhostexプロセスを強制終了させると、コミット済みメモリが解放される」という現象がありますので、これらのユーザーモードプロセスの解放したら、カーネルモードドライバの非ページプールも解放される、というのは少し考えにくいです(ありえない話でもないのですが、ちょっと遠い感じ)。

    でも、ダメ元でドライバのバージョンを確認&変更と、レジストリの調整は試してみようかと思います。

    それから、AMD VGAドライバというのは、今回は無さそうです。Intel CPUの内蔵グラフィックスを使ってますので。

    とにかく、情報ありがとうございます。何か進展があれば、何らかの形で報告したいと思っています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2014-01-25T03:57:16+00:00

    質問者です。その後の調査内容です。

    どうもWindows自体の問題のような気がしています。やはり、メモリリークの可能性が高いと思いますが、海外ではゾンビプロセスの存在を示す情報もあります。

    メモリリークの方は、KB2870467でoleaut32.dllにメモリリークの問題があるとされています。Windows Updateでは「オプションの更新プログラム」の方に入っていて必須ではないので気が付きませんでしが、KB2911106をインストールすると、このKB2870467のメモリリークが解消されるようです。

    本日これをインストールして半日ほど使っていますが、コミット済みメモリは増えていないような気がします。まだ、連続稼働時間が少ないのでなんとも断言はできないですが、その他の現象も総合すると可能性は高いと考えています。少なくともexplorerがこの問題のoleaut32.dllをロードすることはわかっていますし、このdllのメモリリーク問題であれば、explorerをkillすることでメモリが一気に解放される事実とも合致します。このdllを直接的or間接的にロードするプロセスは他にも存在しますから、それらでも少しずつはメモリリークが起きていたのでしょうが、なぜexplorerが大量にメモリリークを起こしていたのか不明です。

    一方、ゾンビプロセスが発生していることも確認しています。rammapというツールを使うと、より細かいメモリの使用状況を把握できますが、アプリケーションを終了したときにタスクマネージャのプロセス一覧からは消えるけれど、rammapのプロセスリストには残っている場合があります。そのようなゾンビプロセスはTotalメモリサイズが20KByteだけ残って再起動以外には消せなくなるようです。

    こちらの方は、今回の現象とは直接関係がないと考えています。20KByte程度のゾンビプロセスが残って数GByteものコミット済みメモリになるとは考えにくいですし、explorerを強制終了したからといったゾンビプロセスも同時に無くなってメモリが解放されるわけではないからです。

    というわけで、KB2911106を適用してしばらく様子を見ます。

    parsakunさん、もうここは見ていないかもしれませんが、もしご覧になっていましたらこのfixを適用してみて、現象が改善されるかどうか、情報を共有しませんか?

    この回答は役に立ちましたか?

    20+ 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2014-01-25T05:18:10+00:00

    メモリーリークの件は私もかなり気になっていることなので、

    こちらの質問は今もチェックさせて頂いてます。

    KB2870467

    http://support.microsoft.com/kb/2870467

    上記の更新プログラムはWindows8.1だと「KB2911106」ですが、Windows8だと「KB2889784」のようです。

    私はWindows8のまま使っているのですが、インストールされた更新プログラムにKB2889784が既に入っていました。

    (インストール日:2013/12/12)

    KB2870467の修正プログラムが適用された状態で、コミット済みが増加し続ける現象が発生しているので、Windows8についてはKB2870467が要因のようではないようです。

    更新プログラムで改善する可能性もありそうなので、今後も内容を注意してみていこうと思います。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2014-02-05T02:22:59+00:00

    質問主です。

    parsakunさん、早々にお返事をいただいておりながら、返答が遅くなりすみません。

    KB2870467のメモリリークの件、少し時間をかけてみていました。

    やはり、parsakunさんがおっしゃるようにコミット済みメモリは増えてきています。KB2870467を見て「コレだ!」と思ったのですが、ぬか喜びだったようです。残念・・・。

    それにしてもおかしな現象だと思います。

    特定のプロセスがメモリリークを起こしているのであれば、そのプロセスのプライベートワーキングセットが大きくなったりするなど、タスクマネージャやrammapツールで確認ができるはずですが、そういうことはないです。今回、問題のexplorer.exeやtaskhostex.exeは多少メモリ使用量が多いかな~という印象は持ちますが、何GBも使っているようには見えないですし。でも、この2つのプロセスを殺すと、コミット済みメモリがかなり減るのは確かです。

    単純なメモリリークではないのかもしれません。Windowsシステム奥深くに潜む「何か」があるような気がします。日本ではこのような症例をあまり聞かないので、その「何か」を目覚めさせるトリガーに触れてしまっているのだと思うのですが、それが分からない状況です。

    継続して、別の角度からも検証してみます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2014-02-27T14:18:43+00:00

    私も同様の現象に悩んでおり、原因切り分けをしている最中です。

    まだ、原因がわからないのですが、手がかりとして情報を提供いたします。

    タスクマネージャの詳細タブで表示される項目にコミットサイズというものがありました。

    デフォルトでは出ていませんが、任意の項目を右クリック→列の選択を選ぶと、表示できる項目の一覧が出ます。

    その中にコミットサイズと言うのがありますので、どのプロセスがどれだけコミット済みのメモリを抱えているかがわかるようです。

    私の傾向としては、起動時間6日ほど、その間ネットサーフィン、フォトショップでのフォトレタッチ、Flashbuilderでの開発、を主にやっている状態で以下のようになりました。

    ※以下の数値はメモリ(プライベートワーキングセット)/コミットサイズの順で書かれています。

    ウイルスバスター(coreServiceShell.exe)19MB/740MB

    ウイルスバスター(PwmSvc.exe)10MB/292MB

    NTカーネル(system)0.9MB/240MB

    Chrome(chorome.exe)219MB/228MB

    デスクトップウィンドウマネージャ(dwm.exe)70MB/146MB

    エクスプローラ(explorer.exe)48MB/122MB

    ※2月28日追記

    そして、上記の状態(コミット済みが15.8GB)でエクスプローラを再起動してみると、7GBほどコミット済みの数値が減少しました。

    何度かコミット済みの数値が増えてきた段階でエクスプローラの再起動を試してみましたところ、一様にコミット済みの数値が数GB減少する、という状況が再現出来ました。

    エクスプローラ再起動で減少後のコミット済みの残量は、いずれも6GB~7GBと比較的安定した数値が出ました。

    ウイルスバスター、NTカーネル、デスクトップウィンドウマネージャはプロセスの再起動が出来なかったので、不明です。

    Chromeはおよそタスクマネージャのコミットサイズで表示されている分が実際コミット済みの数値から減じられているようです。

    エクスプローラ同様にタスクマネージャのコミットサイズと、実際にコミット済みの数値の減少量が違う例としては、SoftBankAssistantServices.exeがありました。

    こちらは、特に何かしているわけではないのに、コミットサイズがどんどん増えていき、プロセスの再起動でコミット済みの数値が1GBほど減る、という状況が再現出来ました。

    こちらはただのメモリリークかも知れませんが、情報として書き添えておきます。

    いよいよexplorer.exeが怪しい動きをしているんじゃないかと疑いたくなってきましたが、引き続き調査をしてみますので、よろしくお願い致します。

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません