macOS 12 Montereyのアクセシビリティ機能によるメモリリークは、マウスカーソルが変化するほぼ全てのアプリで発生するので注意を。

スポンサーリンク

 macOS 12 Montereyのアクセシビリティ機能によるメモリリークは、マウスカーソルが変化するほぼ全てのアプリで発生するようです。詳細は以下から。

Visual Studio Code

 Appleが日本時間2021年10月26日より公開を開始したmacOS 12 Montereyではマウスポインタのカラーや大きさを変えるアクセシビリティ機能と競合するNSCursorを利用していたFirefoxでメモリが解放されず圧縮メモリ容量が数十GBになるメモリリークが発生すると以前お伝えしましたが、

Firefoxでのメモリリーク

macOS 12 MontereyとFirefoxでのメモリリーク

その後、頂いたいくつかのコメントによると、このアクセシビリティ機能によるメモリリークはMozilla Firefox固有のものでなく、マウスカーソル(ポインタ)の形が変化する全てのアプリで発生するそうです。

VScodeとSublime Textで発生しているメモリリーク

VScodeとSublime Textで発生しているメモリリーク

スポンサーリンク

検証

 例えば、Visual Studio CodeやSublime Text、CotEditorなどのエディタ系アプリはテキスト上ではI-Beam(iBeam)カーソル、サイドバーエリアではHand(pointingHand)カーソル、その他のエリアでは通常の矢印(arrow)カーソルになりますが、macOS 12.0.1 Montereyではこの1サイクルだけで数十MB ~ 100MB程度のメモリを消費します。

macOS 12 MontereyのArrow, I-Beam, Handカーソルとメモリリーク

 実際に検証してみましたが、アクセシビリティ機能のマウスカーソルに関する機能(ポインタのカラーとサイズ)を有効にした状態でVScodeのツールバー → テキストエリア → サイドバーの順にマウスカーソルを移していくだけで、以下の通り約5分で1GBのメモリが使用(リーク)されました。

動画は途中カットしています。

 エンジニアの方から頂いたコメントによると、この不具合は10月にリリースされたmacOS 12.0 Monterey RCで確認されMozillaはAppleにこの不具合を報告したものの、修正されないまま正式にリリースされてしまったそうで、本日リリースされたmacOS 12.1 Monterey beta 3 Build 21C5039bでようやく修正が入ったようなので、macOS 12.1がリリースされるまではマウスカーソルに関するアクセシビリティ機能[1, 2]はOFFにしておいた方が良さそうです。

macOS 12 Montereyでマウスポインタのカラーを変更する