タクテク2
昭和歌謡好き大学院生の雑記

デスクトップウィンドウマネージャーのメモリリークをどうにかする。

1:驚異の1.6GB

デスクトップウィンドウマネージャー メモリリーク発生状況

 Windowsにおいてウィンドウの描画を担当しているプロセスであるデスクトップウィンドウマネージャーことdwm.exe(以下、長いのでDWM)。筆者のPCにおいて、こいつが思いっきりメモリリークを起こし、メモリ使用量が驚異の1.6GByteを突破海外のコミュニティとかを漁った結果、グラフィックドライバのダウングレードが解決策であるという結論に達したので記録しておきます。

 先日、メールにて「最新ドライバーでは修正されている」との情報をいただき、実際に修正されていることが確認できました。なのでドライバーをアップデートすれば解決できます。情報を提供していただき、ありがとうございました。

ドライバ ダウンロードページ2

 具体的には、DCHドライバーのダウンロードページから最新のドライバ(執筆時点では2021/12/14公開のver30.0.101.1191)をダウンロードし、インストールするだけで解決できました。

最新ドライバーインストール後

 こんな感じで、最新ドライバーインストール後は70MB程度に収まりました。

リリースノート

 ちなみに、リリースノートには「Stability improvements with Desktop Window Manager (DWM)」、要は「DWMにおける安定性の改善」と書いてあります。まあ間違ってはないですけどGBオーダーのメモリリークは「安定性」の一言で片付けられる問題じゃない気がします。

以下、旧情報

 まず、ネット情報によるとこのメモリリークはIntel UHD Graphics 630で発生するようで、筆者も同グラフィックスを利用しています。また、この問題はIntelに報告されているものの再現不能との回答が返されていました。「同様の事例はあるけど、それほど多くはない」といった感じみたいです。

ドライバ ダウンロードページ

 色々試したことは後で書くとして、まずは解決方法から。IntelのHPに行って、「その他のバージョン」のところから一番古いやつをダウンロード・インストールして再起動すれば直りました。インストール時に「古くなるけど大丈夫?」と聞かれますが気にせず「はい」を押しましょう。

ドライバ ダウングレード後のバージョン

 詳しく書くとバージョンは26.20.100.7985、日付は2020年3月9日。1年以上前のドライバーで、ドライバーとかは最新を保っていたい筆者としては嫌ですが、現状これしか解決策がないらしいので仕方ないです。

ドライバダウングレード後 DWMメモリ使用量

 ダウングレード後は無事メモリ使用量が100MB以下に収まりました。

2:もう一つの解決策?

ドライバ 最新版

 ここはらは試した流れを記録しておきます。「困ったときはアップデート」ということでまず初めは最新版へのアップデートを行いました。具体的には27.20.100.8935から27.20.100.9466へとアップデート。

最新版ドライバ 再起動時

 これで再起動した後はしばらく稼働させてもDWMのメモリ消費は100MB以下だったので お、直ったじゃんと思ったわけです。

最新ドライバ シャットダウン時

 しかし、海外コミュニティによれば再起動後は大丈夫だけどシャットダウン→起動だとNGとのことだったのでシャットダウンして再度起動すると見事にメモリリークし、メモリ使用量は2GBに迫りました。「再起動は大丈夫だけど、シャットダウン→起動はダメ」という状況から推測するに、高速スタートアップが原因でメモリリークが発生していると考えられます。従って、意地でも最新ドライバを使いたい場合は高速スタートアップを無効化すればメモリリークは解決するかもしれません。筆者は高速スタートアップは犠牲にしたくないので試してはいませんが。

Tags: