2014.12.07: 手順の一部を修正。
どう考えてもメモリは余りまくっている筈なのに、Windows7が「メモリが不足しています」とメッセージを出す場合の原因の多くは、恐らく[Windows Search]がインデックス作成中・・・て事で間違いないと思います。
今回の症例
環境構築中のWindows7マシンで「コンピュータのメモリが不足しています。他のプログラムを終了してから、再試行してください。」のメッセージが頻繁に発生しかなり鬱陶しい状態になってしまった。
今使っているPCのメモリ搭載量は16GB。十分すぎるほどメモリを積んでいます。
以前使っていたメモリ9GBのPCでも、サブで使っているメモリ2GBの Windows 7 マシンでも、このエラーは滅多な事では発生しません。何が起きているんだろう・・・?
エラー発生時の状況
▲タスクマネージャーを開いてみると、空きメモリは12GBもあります。
十分に余っているじゃないか・・・
メモリ不足の原因としてWindowsが挙げるアプリケーションは
・explorer
・internet explorer
この2点である場合が圧倒的に多い。
IEとExplorerとメモ帳程度しか起動していない状況でも、このエラーは発生します。
こんな状況で16GBのメモリを食い尽くすなんて考えられない・・・
何が起きているんだ・・・?
イベントビューアーを確認してみる
Windows管理ツールの「イベントビューアー」でログを確認してみると、原因がアッサリ分かりました。
▲クリックで拡大
メッセージ内容
Windows は仮想メモリの不足状態を診断しました。仮想メモリを多く消費したのは次のプログラムです:SearchFilterHost.exe (4936) は 31605702656 バイトを消費し、avguard.exe (5312) は139640832 バイトを消費し、iexplore.exe (4372) は 124047360 バイトを消費しました。
SearchFilterHost.exeというプログラムが31GBもの仮想メモリを消費しています。
Windowsデスクトップサーチで使用しているプロセス。ファイルにインデックスを作成して、ファイル検索を高速に行う為のプログラム。
そういえば、今までのPC環境ではインデックス作成サービスは無効にしていました。
今回の新PCは「SSDを積んだ事だし、MS標準のファイル検索でも高速に使えるかも?とりあえず試してみよう」てな考えでインデックス作成を有効なままにしていました。
こいつ・・・インデックス作成時にこんなにメモリを食うのですね('Α`)
対処方法1 インデックス作成を無効にする
MS Searchを完全に無効にする方法
Windowsサービスを起動し、無効設定する。
▲クリックで拡大
1.手順は「スタート」>「管理ツール」>「サービス」などから実行。
またはWin+Rキーから「services.msc」を実行。
2. リストから[Windows Search]を探しダブルクリック。
3. スタートアップの種類を[手動]に、
サービスの状態を「停止」状態にする
4. OKボタンをクリックし、設定を適用してからPC再起動
※上記方法を行うと、全てのインデックスサービスが中止されてしまう。
HDD、SSD別にインデックスの作成を有効/無効にしたい場合
インデックス作成を中止したいHDD/SSDのプロパティ画面を開き、個別にインデックス作成のチェックを外してやる。
対処方法2 インデックス作成を有効なままで使う場合
CCleanerなどのWindowsお掃除ソフトを標準設定で使うと、Windowsが作成したインデックスは全て削除されてしまいます。
削除された後は、Windowsが再びインデックスを作成する為に [SearchFilterHost.exe]をガンガンに走らせますので、再びメモリ不足の警告が発生しやすい状況になります。
私の場合、これが原因でした(^_^;
メモリ不足のエラーが頻繁に発生するPC環境で Windows メンテナンスツールを使っている場合は、インデックス作成に関する項目をオフにしておきましょう。
▲クリックで拡大
画像はCCleaner でMS Searchのインデックスを削除しないようにする方法。
解説は以上です。
とりあえず今更ながらMS Searchを試していますが・・・SSDを利用してもやっぱりMS Searchはイマイチですなあ。。。やっぱファイル検索はEverythingが良いですわ。