Macを再起動せずにWindowServerを完全リセットする方法

MacのWindowServerがメモリを食っている時などに、Macを再起動せずにWindowServerをリセットするターミナルコマンドを紹介。

また、副次的な効果としてWindowServerをリセットすると、macOSにスワップが発生していた場合にスワップ領域が大幅にクリアされる(ゼロにはならないが)。

WindowServer完全リセットターミナルコマンド

下記コマンドをターミナルで実行すると、実行した瞬間にmacOSはログイン画面に戻り、アプリケーションは開き直しになってしまうがWindowServerは完全にリセットされる。

sudo pkill -HUP -u _windowserver

パスワードの入力を求められたら管理者パスワードを入力してエンターキー。

コマンド実行後はスワップ領域も大幅にクリアされる

冒頭で書いた通り、WindowServerをリセットするとmacOSにスワップが発生していた場合、スワップ領域が大幅にクリアされる。

コマンド実行前。1GB近いスワップが発生している
コマンド実行後。スワップ領域が大幅にクリアされる

調べたところ、このコマンドを実行してスワップ領域が0になったという人もいるようだが、管理人の環境ではメイン・サブのMac共にスワップがゼロになるというのは確認できなかった。

とはいえ、Macを再起動せずともスワップ領域が大幅にクリアされるというのは個人的には精神衛生上助かる。

まとめ

WindowServerはmacOSのコアとなるものの一つであり、ウィンドウの描画全般を担っているが、その分、作業内容によっては大量にメモリを食う場合がある。

WindowServerでmacOSの動作が重い、あるいはスワップ領域を大幅にクリアさせたい場合は本記事のコマンドが役に立つだろう。