Runtime Broker 占用 CPU 或内存高怎么办
Runtime Broker 是 Windows 的正常进程,也就是 RuntimeBroker.exe,它夹在商店类 App 和这些 App 要用的系统能力之间,比如定位和麦克风,平时几乎不占 CPU,内存也不多。它占用很高时,原因几乎总是某一个打包 App 一直在找它要东西,所以要做的是找到那个 App,结束 Runtime Broker 只能管几分钟。
正常的电脑上它是什么样
微软公开讲这个进程的内容不多,这里直接看一台 Windows 11 电脑上的实际情况,测试用的 ThinkPad 上有三个副本在运行,每一个都是这样:
C:\Windows\System32\RuntimeBroker.exe -Embedding
Started by: C:\Windows\system32\svchost.exe -k DcomLaunch -p
有好几个副本是正常的,不同的 App 有各自的副本,数量可能和这里不一样,但路径和启动它的进程应该一致,可以这样列出来:
Get-CimInstance Win32_Process | Where-Object Name -eq 'RuntimeBroker.exe' | Select-Object ProcessId, ExecutablePath, CommandLine
找到背后的 App
Windows 没有哪一列能告诉你每个副本背后是哪个 App,实际能用的办法是逐个排除:
- 按
Ctrl + Shift + Esc打开任务管理器,在“进程”页按 CPU 或内存排序。 - 一个个关掉打包 App,比如照片、手机连接、小组件、Teams、邮件,或者从 Microsoft Store 装的东西,看一分钟内数字有没有降下来。
- 数字降了,就更新那个 App,或者到“设置 › 应用 › 已安装的应用 › (这个 App)› 高级选项”里重置,同一页的“终止”能停掉它的后台进程。
- 没有变化就重启,留意数字再次升高时开着哪个 App。
同一个“高级选项”页面里,如果有“后台应用权限”这一项,不需要在后台运行的 App 可以设成“从不”。
| 看到的情况 | 通常意味着 | 可以试试 |
|---|---|---|
| 打开 App 后 CPU 短暂升高几个百分点 | 正常的权限检查 | 不用管 |
| 开着某个 App 时 CPU 一直高 | 这个 App 在反复请求 | 更新、重置或者卸载它 |
| 内存一连几个小时往上涨,涨到几 GB | 这个副本或者它服务的 App 有内存泄漏 | 结束这个副本,再按上面的办法找 App |
| 没开 App 也一阵一阵升高 | 小组件、开始菜单或者系统提示 | 看下面 |
一个常被提到的设置
不少报告把 Runtime Broker 的 CPU 占用和 Windows 提示联系在一起,上面的办法都没用的话,可以关掉“设置 › 系统 › 通知 › 其他设置 › 使用 Windows 时获取提示和建议”。微软没有写过这层关系,它只是常见的说法,不算查实的原因,但试一下没有成本,一天之内就能看出有没有用。
它是不是病毒
真的文件在 C:\Windows\System32,有微软的签名。如果副本从别的地方运行,名字有细微差别,或者启动它的不是 svchost.exe,就用 Microsoft Defender 扫一遍,路径可以用上面的 PowerShell 命令查。
不要这样做
- 不要删除
RuntimeBroker.exe,也不要改它的所有者来拦它,依赖它的 App 会出问题,Windows 也会把文件缺失当成损坏。 - 不要照论坛的帖子改注册表禁用它,商店 App 需要它,症状没了,那个 App 还是没找到。
- 不要一遍遍结束它,结束一个副本问题不大,只是它服务的 App 可能出错或者关闭,需要时 Windows 还会再启动一个。
- 不要因为它去装“内存清理”工具,这类工具只是把内存暂时推到磁盘上,反而多了磁盘的活。
Mole 能做什么
Mole for Windows 的状态页会把同一会话里的 Runtime Broker 合成一行,关 App 时可以盯着加起来的 CPU 和内存。在这一行的菜单里选“为什么在运行?”,会列出打开那一刻占用最高的几个副本,想比较就重新打开一次,还能看到“可执行文件”和启动它的进程,正好用来核对上面说的路径和父进程。Runtime Broker 从 Windows 文件夹运行,所以 Mole 把它标成系统进程,不提供“终止”和“强制退出”。Mole 也不管理 App 权限和系统提示。范围更大的问题可以看 Windows CPU 占用高怎么查、Windows 内存占用高 和 商店自己的进程 wsappx。
常见问题
Runtime Broker 是什么?
它是替打包 App(比如 Microsoft Store 里的 App)工作的 Windows 进程,处理它们对定位、麦克风这类能力的请求,文件是 C:\Windows\System32\RuntimeBroker.exe。
Runtime Broker 为什么占这么多内存?
通常是它服务的某个 App 一直在要东西,或者长时间运行的副本出现了内存泄漏。结束这个副本做个快速测试问题不大,又涨上来的话,一个个关打包 App,找到是哪个带起来的。
可以结束 Runtime Broker 吗?
可以结束某个卡住的副本,但它服务的 App 可能关闭或者出错,需要时 Windows 会再启动一个,这只是测试,算不上修复。
可以禁用 Runtime Broker 吗?
不要禁用,商店 App 需要它,声称能禁用的注册表改法,只会留下一个出错的 App,原来的原因也还在。
为什么有好几个 Runtime Broker 进程?
不同的 App 有各自的副本,所以同时有几个是正常的,核对这篇文章时,一台闲着的测试笔记本上就有三个。