WindowServer
简要回答
WindowServer是macOS的系统进程,负责管理窗口,把各个App绘制的内容合成为显示器上的最终画面,并把点按、按键等输入事件传给对应的App。
你在屏幕上看到的一切都要经过WindowServer。App各自绘制自己的窗口,WindowServer再把它们与菜单栏、程序坞、阴影、透明效果和动画合在一起,然后把结果送到每台显示器。
因为它是在替其他App做事,所以它的CPU和GPU占用会随屏幕上的内容起伏。移动窗口、看视频或使用大尺寸外接显示器时,WindowServer排在CPU列表前面是正常的。
WindowServer为什么占用这么多CPU
要绘制的内容越多,WindowServer就越忙。常见原因有:打开的窗口很多、接了多台显示器或高分辨率显示器、使用缩放显示模式、透明等视觉效果,以及不停重绘的App(带动画的网页、视频、游戏)。
只要有一个App不停更新自己的窗口,就能让WindowServer很忙,哪怕这个App本身的CPU占用并不高。如果屏幕看起来没什么变化,WindowServer却一直很高,原因往往是某个App在后台重绘内容。
怎样让它降下来
关掉不需要的窗口和浏览器标签页,退出在后台播放动画或视频的App,然后看看WindowServer是否回落。
如果你使用外接显示器,可以试着断开一台,看看它占了多少负载。在“系统设置”的“辅助功能”→“显示”中,打开“降低透明度”或“减弱动态效果”,也能减少绘制工作。
应该强制退出WindowServer吗?
不应该。WindowServer支撑着你的整个图形界面会话。它一停止,屏幕上的所有App都会随之关闭,你会回到登录窗口,未存储的工作可能丢失。应该减少它要绘制的内容。
如何查看是哪个App让WindowServer忙碌
WindowServer负责绘制,但通常是另一个App让它去画的。活动监视器不会直接把两者联系起来,所以要用排除法找出那个App。
- 打开活动监视器,点按“CPU”标签页,找到WindowServer。你可以在右上角的搜索栏中输入它的名称。
- 记下它的“% CPU”,然后清空搜索,选取“显示”>“窗口化进程”。这样只会列出能创建窗口的进程。
- 按“% CPU”排序。你没在用却一直很忙的App,就是重点怀疑对象。
- 退出那个App,或关掉它的窗口,观察WindowServer一分钟。如果它降下来了,你就找到原因了。
- 如果看不出明显的嫌疑,就逐个隐藏或退出App,从浏览器、视频播放器和带动画的App开始,直到WindowServer平静下来。
WindowServer为什么占用这么多内存
为了把各个窗口合成为一幅画面,WindowServer会为每个窗口显示的内容保留一份图像。窗口越大、越多,显示器分辨率越高,要保留的图像数据就越多,所以它的内存会随你的设置增长。
如果你没有打开更多窗口,WindowServer的内存却连续几天不断攀升,就退出登录后重新登录,或者重新启动Mac。两种办法都能让它重新开始。请先存储你的工作,因为退出登录会关闭你的App。
WindowServer的正常占用与异常情况
正常:拖移窗口、切换空间、滚动、播放视频或连接显示器时,WindowServer会上升,屏幕静止时会回落。在任何屏幕上内容很多的Mac上,它都是比较忙的系统进程之一。
值得检查:屏幕上没有任何东西在动,WindowServer却一直很忙,指针卡顿,或者动画变得不流畅。这通常说明某个App在不停重绘,或者显示器设置需要大量工作。
- 某个浏览器标签页在后台播放动画或视频。
- 接了多台外接显示器,或者使用了非显示器默认值的缩放分辨率。
- 在多个空间中打开了许多窗口。
- 打开了透明和动态效果。
- 某个App每秒更新窗口许多次,例如图表、游戏或录屏工具。
如何查看WindowServer的GPU占用
WindowServer的绘制工作很多是在图形处理器上完成的,所以它的CPU数值只反映了一部分情况。在活动监视器的“CPU”标签页中,选取“显示”>“列”并打开“% GPU”,就能看到每个进程(包括WindowServer)占用了多少GPU时间。
选取“窗口”>“GPU历史记录”,可以看到近期GPU活动的曲线图。如果屏幕静止时曲线仍然很忙,说明还有东西在绘制,用上面的排除步骤就能找到它。
常见问题
Mac上的WindowServer是什么?
它是macOS的进程,负责管理窗口,把App绘制的一切合成为显示器上的画面,并把点按和按键传给App。它是macOS的一部分,不是你安装的东西。
为什么接外接显示器后WindowServer的CPU占用变高?
每台显示器都会增加WindowServer要合成的像素。高分辨率和缩放模式会带来更多工作,所以每多接一块屏幕,负载就会上升。
可以退出WindowServer吗?
不应该。退出它会结束你的图形界面会话并让你退出登录,你的App也会全部关闭。
WindowServer是病毒吗?
不是。WindowServer是macOS的一部分。在活动监视器中,它以系统用户_windowserver运行,而不是以你自己的账户运行。
WindowServer为什么占用这么多内存?
它会为每个窗口保留一份图像,才能把它们合成为你看到的画面。窗口越多、越大,显示器分辨率越高,占用就越多。
关掉窗口能降低WindowServer的CPU占用吗?
通常可以。窗口越少、屏幕上的动静越小,它要绘制的就越少。关掉带动画或正在播放视频的窗口效果最明显。
相关条目
分步指南:哪个App在占用CPU或内存。
想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。