MicrosoftはWindows 10 May 2020 Update(Version 2004)で、Win32アプリからもアプリケーションのRAM使用量を削減することができる「セグメントヒープ」が利用可能になったことを発表しました。
大量にメモリを消費するChromeやEdgeのようなアプリケーションのメモリ消費量の削減に役立つ機能として期待を集め、GoogleもChromeにセグメントヒートを導入する予定でしたが、メモリ使用量が削減されるかわりに、CPU使用率が増加するという欠点が見つかり、Chromeに対する正式な導入は行われていません。
しかしその後、Googleの開発者がこの欠点を回避する方法を発見し、Microsoftに協力を求めていることが明らかとなっています(Windows Latest)。
Googleの技術者がGitHubに投稿した情報によると、Microsoftがntdll.dllに存在するRtlpHpHeapFeaturesの"segment-heap-enabled"ビットをセットあるいはクリアーする機能を追加してくれれば、パフォーマンスの低下なしにセグメントヒープを利用可能になるとのことです。
具体的には、以下の2つのフラグを追加してくれるよう要求しています。
- HEAP_ENABLE_SEGMENT_HEAP: NTヒープの代わりにセグメントヒープを作成する。
- HEAP_DISABLE_SEGMENT_HEAP: アプリケーションマニフェストでセグメントヒープが要求された場合でも、セグメントヒープの代わりに NT ヒープを作成する。
この機能は全てのChromiumベースのブラウザにとって有益だとGoogleのエンジニアは説明しています。
現在Googleはセグメントヒープの実験中で、Microsoftが要求を受け入れたとしても、Windows版Chromeでセグメントヒープがすぐに有効になるというわけではなさそうです。しかし将来的に導入される可能性のある省メモリ技術として今後も注目を集めることになりそうです。