こんにちは、阿久津です。Internet Explorer(以下、IE)8では、LCIE(Loosely-Coupled IE)と呼ばれるプロセスモデルが採用されました。これはIE8の安定性を向上させるために、前バージョンであるIE7から改善されたポイントの一つ。
IE7で複数のタブを開き、Webページを閲覧している際に、任意のサイトでクラッシュしてしまいますと、すべてのタブが閉じてしまいました。この問題を解決するのがLCIE(Microsoftの技術資料によると「ルーシー」と発音するそうです)の存在。ユーザーインタフェースフレームをタブから切り離すことで、安定性を向上させるというものです。
具体的にはユーザーインタフェースフレームと、お気に入りバー、コマンドバーの3つをメインプロセスに残し(IE7では、サブプロセス内にユーザーインタフェースフレームが存在します)、サブプロセス上でグルーピングされたタブが起動し、拡張ツールバーやActiveXコントロールもタブ内で処理されるため、何らかの理由でクラッシュしても、グルーピングされたタブ内で終了処理が完了するのです。
ここまでの話をご覧になりますと、何か思い出した読者も多いのではないでしょうか。それがエクスプローラのプロセス分離機能。確かWindows 2000あたりから用意され、HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ AdvancedキーにDWORD値「SeparateProcess」を作成し、データ値を「1」に変更するという設定を行なうことで、起動するエクスプローラのプロセスを分離することが可能でした。元々同一プロセスでプログラムを実行しますと、メモリ使用量を軽減できるというメリットがありましたので、以前のWindows OSでは、同様のロジックを使うことが多かったのですが、最近はメモリ使用量よりも安定性が優先されるようになり、IE8のLCIEのような仕様変更が行なわれたのでしょう(図01)。
さて、タブを閉じればすぐにプロセスが終了するというのが、一般的な感覚です。しかし、IE8からほどこされた仕様変更により、タブを閉じてもプロセスは終了しません。プロセスを監視するタスクマネージャなどで監視しますと、IE8のサブプロセスが一分ほど残されたままになっていることがわかります。なお、この一分間に別の新しいタブを開きますと、プロセスの再利用が行なわれますが、IE8自体を終了するときは、すべてのプロセスが終了する仕組みになっています(図02~04)。
この仕様によりパフォーマンスや安全性が向上しますが、ネットPCのように効率性を優先したいコンピュータでは、冗長な機能になりかねません。また、前述した仕様とは異なり、IE8自身を終了しようとしてもうまく動作しない場合が発生します。そこで、サブプロセスを終了するタイミングをチューニングしてみましょう。なお、IE8は終了させた状態で行なってください。
1.[Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力してから<OK>ボタンをクリックします。
2.レジストリエディタが起動したら、HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Mainキーをたどって開きます。
3.右ペインの何もないところを右クリックし、メニューから<新規>→<DWORD値>と選択します。
4.ステップ03で作成したDWORD値の名前を「TabShutdownDelay」に変更してください。
5.DWORD値「TabShutdownDelay」をダブルクリックし、<10進数>をクリックしてから、値のデータを「10」などに書き換えて<OK>ボタンをクリックします。
6.[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了させましょう。
これでチューニング終了です(図05~08)。
図06: レジストリエディタが起動したら、HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Mainまでキーをたどって開き、右ペインの何もないところを右クリック。メニューから<新規>→<DWORD値>と選択し、「TabShutdownDelay」を作成します |
IE8を起動し、あらかじめ複数のタブを開いてから閉じますと、すぐにプロセスが終了するようになりました。今回のチューニングポイントはステップ05で指定したデータ値。同数値は10進数のミリ秒で指定し、既定値は60000(60秒)となっています。単純に考えると0ミリ秒でも構わないように見えますが、ほかのプロセスとコンフリクト(衝突)し、システム全体が不安定になりますので、10ミリ秒程度にとどめて起きましょう。また、初期状態に戻すには、DWORD値「TabShutdownDelay」を削除し、IE8を再起動してください(図09~10)。
それでは、また次号でお会いしましょう。
阿久津良和(Cactus)