次の方法で共有

メモリが解放されない?

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-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 件のコメント コメントはありません
  2. Anonymous
    2013-10-17T00:24:19+00:00

    近藤さん、アドバイスありがとうございます。

    紹介いただいた類似のスレッドは、おそらく私と同じ症状だと思います。

    しかし、私の方では外部のセキュリティソフトが入れておらず、Windows Defenderのままです。

    taskhostex.exeを終了させるとメモリが大量に解放されることから、Windowsの必須コンポーネントのどれかがメモリを返さないのだと考えているのですが、もしかすると後からインストールされた何かのサービスや常駐物が問題を引き起こしているのかもしれませんね。taskhostexe.exeが提供しているサービスと関係しているものにどういうものがあるのかだけを教えていただくことはできませんか?もしできたら、予め問題箇所を絞り込めるのですが。

    幸い2台で同じ症状が見られることから、この2台に共通してインストールしている「何か」が悪影響をしているのかもしれませんので、一方のPCを使って教えていただいた「クリーンブート」で少しずつサービスを切ったりして問題を絞り込んでいきたい思います。

    症状が出るまでに数日経たないと分からないので、結果が分かるまでしばらくかかりますが、何かわかったら結果報告したいと思います。

    4 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. 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 件のコメント コメントはありません
  4. Anonymous
    2014-01-16T03:21:31+00:00

    たびたびの情報ありがとうございます。

    そうですか、直らなかったのは残念ですね。

    最近はWEBページの更新作業のため、Chrome(Iron)を頻繁に使っているのですが、なんとなくコミット済みメモリの値が上がるのが速いような気がします。

    これまでは1週間位経ってみると上がっていることが多かったのですが、この作業をしているとたった1日でコミット済み=7.xGBとかになっていることがあります。

    一方、ここ数日はできるだけIE10の方を使うようにしているのですが、そうすると(やはり「なんとなく」ですが)、数値の上がり方が緩やかな気がします。

    これが本当なら、Chrome系ブラウザとWin8との相性が悪い、ということになるのでしょうが、やはり不思議なことに、Chromeのプロセスを全部終了してもメモリがほとんど開放されず、Explorerとtaskhostexを終了するとコミット済みメモリが一気に減ります。

    私の想像では、Windowsは内部でhttpアクセスの内容をキャッシュしていて、それが溜まってきているのではないかと思っています。そして、何故かそれが解放されないと。実際、taskhostexが提供しているサービスの一つにWininet Cache task objectというのがあるようですので、ブラウザを使用し続けることで数値が上がるのであれば話が繋がってくると感じています。

    そうなると、問題はWin8自体かな、、、とも。

    > ファイルサーバーとして何ヶ月もつけっぱなしのWindows8はコミット済みが増加していくことはないので

    単なるファイルサーバーなら、そのサーバーからWEBブラウジングはしないでしょうから、その点でもやはり、ブラウザとの因果関係が疑われますね。

    いずれにしても、まだまだ様子見状態が続きそうです。

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  5. Anonymous
    2014-01-03T08:36:26+00:00

    私の場合は、Classic Shellを最新版に更新すると改善しました。

    私もWindows 8 64bit・メモリ32GBの環境で、再起動せず1週間くらい使っていると、メモリ不足の警告メッセージが表示されて困っていました。

    タスクマネージャーで確認すると、使用可能は10GBくらい空いているのに、コミット済みが31GBほどとほぼ使いきっている状態になっていました。

    アプリをすべて終了しても、使用可能メモリは増えるのですが、コミット済みの値は減りませんでした。

    「シェル拡張機能などが影響している可能性」という回答内容があったので、Classic Shellを最新版にアップデートしたところ、コミット済みが増え続けることが無くなったように思います。

    今までアップデートせずに古いものを使い続けていたのですが、メモリ関連のバグも修正されていたのかもしれません。

    (Classic Shellのバージョン:3.6.3 -> 4.0.2)

    私の場合は、Classic Shellというスタートメニュー表示やエクスプローラ拡張ソフトでしたが、常駐系のソフトなどはメモリ解放バグがあると長時間の使用時に影響があるのかもしれませんね。

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