解决升级 macOS Tahoe 26 后 Electron 应用卡顿与 GPU 占用过高

3 min


解决升级 macOS Tahoe 26 后 Electron 应用卡顿与 GPU 占用过高

问题分析

简单来说,问题出在 macOS Tahoe 的窗口管理器 WindowServer 上。

它在渲染某些应用(特别是基于 Electron 框架的应用)的窗口阴影时,会消耗巨量 GPU 资源,导致占用率飙升到 80% 以上,从而引发卡顿和发热。

你可以通过「活动监视器」的 GPU 栏确认这一点:当应用窗口在前台时 WindowServer 占用率暴涨,最小化或全屏后则恢复正常。


解决方案

在苹果官方发布系统更新修复之前,可以试试下面这两种方法绕过这个问题。

https://github.com/microsoft/vscode/pull/267724

全局临时设置(重启失效)

这个方法通过一条命令暂时改变系统的渲染方式,对所有相关应用都有效。

在「终端」里运行:

launchctl setenv CHROME_HEADLESS 1

执行后,需要重启一下正在运行的 Electron 应用才能生效。缺点是,电脑每次重启后都需要重新运行一次这条命令


修改应用文件(更新失效)

这个方法是直接修改应用本身,禁用它的窗口阴影。效果更持久,但只对单个应用生效。

修改 VS Code:
sed -i '' 's/experimentalDarkMode:!0}/experimentalDarkMode:!0,hasShadow:false}/g' /Applications/Visual\ Studio\ Code.app/Contents/Resources/app/out/main.js

修改 Cursor:
sed -i '' 's/experimentalDarkMode:!0}/experimentalDarkMode:!0,hasShadow:false}/g' /Applications/Cursor.app/Contents/Resources/app/out/main.js

这个修改在系统重启后依然有效。但缺点是,每次应用自身版本更新后,这个修改就会被覆盖,需要重新运行一次命令


Like it? Share with your friends!

0
Anonymous

Choose A Format
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Video
Youtube and Vimeo Embeds