メモリが解放されない?

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. 削除済み

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  2. Anonymous
    2015-04-16T18:45:22+00:00

    ちょっと見ない間に伸びてて、その割には解決してなく問題の根の深さを再認識してます。

    さて、物理メモリ、仮想メモリのはなしですが、ちょっとチャチャ入れますね。

    まず、使用中メモリ→これは物理メモリの使用量です。

    そして、コミット済み→これは物理、仮想両方でコミットされているメモリの総量です。

    そして、

    ・PCをつけっぱなしにしてウェブブラウズなど、ごく一般的な操作をすると、コミット済みメモリがモリモリ増えていく。

    ・explorer.exeとtaskhostexe.exeをkillした時に、コミット済みメモリが大幅に減るよくわからない現象が起こる。

    ・物理メモリに空きがある状態(使用中<<<インストール済み物理メモリサイズ)にもかかわらず、メモリ不足というエラーが出る、もしくはパフォーマンスが劇的に悪化する。

    これが今回の問題のおおまかな部分ですね。

    3つ目は単純にページファイルの最大容量に到達、もしくは到達直前なだけなんですが。

    そして、ややこしいことに物理メモリ、仮想メモリの他に物理アドレス空間、仮想アドレス空間なんてものもあります。

    これはそれぞれ物理仮想でイコールじゃないですよね。

    >>  「呼び出し側プロセスの仮想アドレス空間内のページ領域を、予約またはコミットします。」

    > つまり、この API を呼び出したところで、物理メモリにはなんら影響を与えない。。。ということではないでしょうか?

    > 提示されているサイトは、特定のプロセスにおける「仮想アドレス空間」のメモリ マップ状態を調べる方法だと思います。(ちゃんと読んでないけど。)

    仮想メモリと仮想アドレス空間を混同してますね。

    仮想アドレス空間はメモリの物理仮想関係なく、OSに申請したサイズで割り当ててもらったメモリのアドレス空間ですね。

    VirtualAlloc()の検証方法としてはスレ主さんので意図はあってるんじゃないですか?

    だからどうしたら良いかは本職じゃないのでよくわかりませんが。

    デバッグ方法に関しては、分かりかねるので、他の人に譲りますね。

    最後に、

    >(自分でデバッグすれば、1日程度原因究明できる話では。。。と思っています。)

    こういう捨て台詞はかっこ悪いのでやめましょ。それを指し示せない自分が虚しくなるだけでしょうに。

    >なぜこの問題を1年以上にわたりこのコミュニティで議論しているのか、理解に苦しみます。

    状況の再現に時間がかかるので、多くの情報を集めるため、だと私は把握してます。

    議論じゃなくて情報収集ですね。

    チャチャ入れ失礼しました。

    WindowsUpdateである日ぽっくり直ればいいのになぁ・・・

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

    0 件のコメント コメントはありません
  3. 削除済み

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  4. 削除済み

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  5. Anonymous
    2015-02-09T13:39:14+00:00

    > そりゃ休止状態を使えば使うほどコミットメモリは増加する思う、既知の常識。

    すみません。これが常識だということは初めて聞きました。「常識」=「説明するまでもない」ということかもしれませんが、常識であればどこか他でもそういう書き込みなり情報があるはずだと思います。どこか一つでもよいので例示していただけませんか?

    (自分も含めて)いろいろな人がいますので、あまり考えすぎずに(相変わらず)「Windowsは(環境によっては)メモリの使い方がダメダメなOSなんだということは既知の問題です」ぐらいに捉えておくといいのではないですかね。

    Linuxなどをみてもx86のOSだからメモリは4GB弱しか使用できないということではありませんし、WindowsというOSのメモリマネージマントに根本的な問題があるのかもしれませんね。

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

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