メモリが解放されない?

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-02-04T07:03:26+00:00

    Natsu Yukibotaruさん、こんにちは。

    > 内容を読ませて頂きようやくわかってきました、お仕事での事情を抱えてらっしゃるのですね。

    「事情」というほどのこともないです。単なる「こだわり」という方が近いですね。

    >だからといって休止モードを多用するとメモリが開放されない、でも休止は非常に便利の良い流れ作業です!

    Natsu Yukibotaruさんはもう理解して頂いていると思いますが、今後これを読む人が誤解されないよう補足させていただきます。

    「休止モードを多用する」から「メモリが開放されない」のではなく、「もともと(原因不明だが)コミット済みメモリが増えていく問題がある」から「(休止状態の使用を含んで、シャットダウンを行わない)長期間の連続運用でメモリが徐々に逼迫する」というのが正しい認識かと思います。

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

    0 件のコメント コメントはありません
  3. Anonymous
    2015-02-04T06:55:18+00:00

    jyamira1さん、こんにちは。

    いやいや、与太話なんてとんでもない。なかなか興味深く読ませていただきましたよ。

    ここからはスレの本題からは逸れますが、コメントします。

    > SSDを使用しているなどで休止ファイルの作成をやめると高速スタートアップは強制的に動作しなくなる。

    高速スタートアップが休止状態の応用であって、カーネルモードの環境のみをディスクに保存するのだと考えると、休止ファイルがなくなってしまえば保存先がなくなってしまうので、自動的に高速スタートアップが動作しなくなるのも当然だと受け止めています。

    実際、休止ファイルを消す(powercfg /h offする)と、その時はまだ高速スタートアップの有効無効を設定するチェックボックスがありますが、再起動するとそのチェックボックスは出てこなくなりますよね。そういう点では、MSは休止状態の有効or無効に応じて、高速スタートアップの有効or無効も連動させているのはあるべき動作だと思います。

    > 仮想メモリを0にするとswapfile.sysが作成されなくなる。

    swapfile.sysは、仮想メモリにも高速スタートアップにも関係が無いのでは?

    確か、モダンアプリ用の仮想メモリファイルだったような。

    http://blogs.technet.com/b/askperf/archive/2012/10/28/windows-8-windows-server-2012-the-new-swap-file.aspx

    しかしながら、残りのシステムファイル、pagefile.sysとhiberfil.sysの使い方については少し疑念が残っています。

    pagefile.sysはいわゆる「仮想メモリ」の保存先ファイルとして、hiberfil.sysは休止状態のためにメモリの内容とシステムの状態を保存するためのファイルと理解していますが、Windowsの少しおかしいと思われるところは「仮想メモリ」を0に設定すると、休止状態も高速スタートアップも正常に動作しないことです。

    私が実機で調べた限りでは、仮想メモリをなしに設定した状態で、休止状態に入るとき、または、高速スタートアップ有効でシャットダウンしている過程で、カーネルの状態をちゃんとファイルに保存できないままシステムが落ちているようです。しかし、BSODは表示されません。おそらくシステムが終了するシーケンスに入ってしまっているので、BSOD画面すら出せない状態だからであり、イベントログにも何も残りません。問題は、これが見た目上はシャットダウンが正しく行われ電源が切れただけのようにしか見えないことです。

    このあと起動しようとすると、正しく起動しなかったり、高速スタートアップが無効の状態で起動したり(高速スタートアップの環境がディスクに保存されていないであれば仕方ありませんが)、はたまたKP41がイベントログに残ったりします。

    このことから、私の理解では仮想メモリ(pagefile.sys)と、休止状態は基本的には関係性はないはずだと思っていますが、実際にはWindowsでは何らかの理由で依存している関係である、というのが、私の見解です。その意味で、私の環境では物理メモリを十分に積んでいても仮想メモリを最低レベルの400Mは残すようにしています。

    ちなみに、私は高速スタートアップ有効で使ってますが、ネットでいろいろ言われているような不具合には遭遇していません。また、XPの時代から休止状態はずっと使ってますが、休止状態を使用したことによると思われるファイルの破損なども経験していません。

    そもそも、休止状態というものがどういうものかを考えると、休止中に外付けデバイスを外すとどういうことが起きそうかは想像がつきますので、そういう危険な行為は考えたこともありません。また、高速スタートアップが、ある意味「休止状態」の一部分を使ったものであることを考えると、こちらもシャットダウン後に外付けデバイスを外すと、再起動後(=高速スタートアップによる復帰後)急に見えなくなったそのデバイスをどう取り扱うのか?という点では少し危険な香りがします。

    が、休止状態と大きく異なるのは、高速スタートアップによるシャットダウンではユーザー権限のアプリはすべて終了させられるはずですから、そのユーザーアプリが開いていたファイルについてはシャットダウン前にちゃんと保存している限り破損する理由が見当たりません。

    が、いろいろと報告されているようなことが起こっているのは事実でしょうから、何かあるのでしょうね。Windows自体かもしれませんが、何か他のサードパーティ製ドライバの影響かも知れませんしね。

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

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

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


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

  5. Anonymous
    2015-01-31T12:25:52+00:00

    >それに、高速スタートアップの有効/無効がexplorer.exeやtaskhostex.exeというユーザーモード

    >プロセスに影響するとは考えにくいです(絶対ないとはまで言い切れませんが、、、)

    あくまで、与太話として聞いておいてくださいね。

    ・Windows8/8.1ではドライバを複数個所からシノニムに読み込んで起動する。

    ・デフォルト(高速起動有効)では、休止ファイルとswapfile.sysが作成された状態になる。

    ・SSDを使用しているなどで休止ファイルの作成をやめると高速スタートアップは強制的に動作しなくなる。

    ・仮想メモリを0にするとswapfile.sysが作成されなくなる。

    事象として、高速スタートアップを先に無効にしてから休止ファイルの作成や仮想メモリ0に設定した場合は大丈夫なようだが、休止ファイルなしや仮想メモリ0の片方または両方を先に設定した結果として高速スタートアップの設定は有効な状態のまま機能が無効になってしまった場合は「環境により」不具合が出ることがあるのかもしれないです。(なんというか、デスクトップでは本来関係のない隠し項目であるモバイル用のバッテリー電源管理のの影響でkp41病が発生するような感じとでもいうといいのかもしれません。整合性が取れなくなってしまう環境があるのだと思います)

    高速スタートアップ有効では、ただでさえ(環境次第で?)キーボードの不具合やレジストリのロールバック、ストレージのファイルやフォルダないしパーティション自体の消失などが発生することがあります。(自分の環境ではコマンドプロンプトから休止ファイルを切った時に、メモリが余っているのに足りないという警告が出る不都合と16ビットアプリケーションの数が多すぎますという不都合が出たことがあります)

    参考:

    ブートデバイスをSSDに変えたのに起動が速くならない?……まれにブートの途中から、元のHDDで起動している場合があるようです

    Windows8/8.1の高速ブートに関する誤解について(SSDも使っているのに…、ほかの人より起動が遅いなど感じている方いませんか?)

    まとめ Windows8./8.1 外付けHDD ファイルが消える フォーマット チェックディスク ダーティービット

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

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