デスクトップPCからネットブック、タブレットまで、幅広いハードウエアでの動作が想定されているWindows 8。その実現には効率的なメモリー使用が求められる。Building Windows 8で10月7日に公開された「Reducing runtime memory in Windows 8」でBill Karagounis氏が、Windows 8においてOSのメモリー使用を縮小する取り組みについて説明している。

Karagounis氏によると、Windows 8は開発スタート当初から「Windows 7と同じシステム要件」を目標の1つとしていた。Windows 7世代のハードウエアはもちろん、Windows 7リリース時よりも前に存在したハードウエアにもWindows 8がインストールされることを予想してパフォーマンステストを行っている。この目標を達するためにはWindows 8の新機能がスムーズに動作するように、既存機能が使用するメモリーを削減する必要がある。以下は、Steven Sinofsky氏が3年以上使用してきたネットブック(1GB RAM)にWindows 7 SP1とWindows 8をインストールし、アイドリング時のタスクマネージャーを比較したもの。Windows 7がCPU使用率5%、メモリー使用量404MBであるのに対して、Windows 8はCPU使用率が1%、メモリー使用量281MBである。

Windows 7 SP1

Windows 8

なお、デバイスマネージャーでディスプレーアダプターを無効にしてWindowsだけのメモリー使用により近づけた場合、Windows 8はアイドリング状態でメモリー使用量が200MB以下に収まるという。

Windows 8で採用されたメモリー使用削減の様々なテクニックの中から、Karagounis氏は、メモリー・コンバイニング、OSサービスの変更、細かな優先順位付けなどを紹介している。

メモリー・コンバイニングは、通常の動作時にWindowsがシステムRAM全体のコンテンツをチェックし、複数のアプリケーションによるコンテンツの重複があれば、1つのコピーを維持して残りを解放する。OSサービス変更は、常時動作するOSサービスの見直しだ。これらはアプリケーションが使用できるメモリーを圧迫する原因になるため、13個のサービスをマニュアルスタート、またはデバイスの接続やネットワークアドレスの存在がスタートの引き金になるオンデマンド・モデルに変更した。例えばプラグ&プレイやWindowsアップデートはオンデマンド・スタートになる。最後の細かな優先順位付けは、アプリケーションやシステムコンポーネントによってメモリー割り当ての優先順位を付けるスキームの改善だ。これによりWindowsがより的確に維持・解放を判断できる。

また、タブレットのようなMetroスタイルのユーザーインターフェイスで使われる種類のデバイスでは、必要にならない限りデスクトップ環境用のOSコンポーネントをイニシャライズしない。これにより、現時点でメモリー使用をおよそ23MB削減できるという。