msedgewebview2.exe 是什么,GPU 进程为什么占着 CPU
每一份 msedgewebview2.exe 都是某个应用那组 WebView2 进程里的一个,其中 GPU 进程负责画这个应用的页面。CPU 或内存偏高,多半来自它正在显示的网页,所以把这个应用退出,或者重新打开一次,让新的 WebView2 运行时加载进来。卸掉运行时,依赖它的应用会停掉,而且它通常还会回来,Windows 11 本来就带着它,很多应用也会再装一遍。
同一个文件,好几种活
微软的终端用户 FAQ 就是为任务管理器里的 msedgewebview2.exe 写的,这个文件是 WebView2 运行时,会自己更新,安装方式和它跟 Edge 浏览器的差别见 WebView2 是什么。
WebView2 用的是 Edge 的进程模型。进程模型页面 把一组定义成一个浏览器进程、一个或多个渲染进程,再加上 GPU 进程和音频服务这类辅助进程,FAQ 把浏览器进程称作 manager,另外列出网络或音频这类工具进程,这些角色在详细信息页里都显示成 msedgewebview2.exe,文件名本身分不出它在干什么。
一组进程绑在一个用户数据文件夹上,用了两个文件夹就有两组,FAQ 里常见的画面是每个用到 WebView2 的应用各有一组。manager 那一行和一组进程怎么围着它形成,见 任务管理器里的 WebView2 Manager 是什么。
会变多的是渲染进程,通常每个 WebView2 控件对应一个,站点隔离还会再往上加。进程模型页面把具体规则留给 Chromium,它引用的浏览器架构文章 说站点隔离会给每个跨站 iframe 单独开一个渲染进程,而每个进程都有自己私有的内存空间。
GPU 进程在画什么
Chrome 那篇文章的进程表里,GPU 进程单独处理 GPU 上的工作,因为 GPU 要把多个应用的绘制请求画到同一块表面上,WebView2 沿用了这个拆分。微软的性能说明 写明渲染默认走 GPU,驱动程序和额外的缓冲区都要分配,这部分会占内存,同一页把 disable-gpu 当作排障用的开关。
同一个用户数据文件夹里,GPU 进程是共用的。WebView2 反馈讨论 里的一条回复说,一个宿主里的多个实例会共用浏览器进程、网络进程和 GPU 进程,每个 WebView2 默认仍有自己的渲染进程,为的是沙箱隔离,所以一个比较忙的视图,可以把同时服务这个文件夹里其他视图的那一行 GPU 进程顶高。
COREWEBVIEW2_PROCESS_KIND 列出了浏览器、渲染、工具和 GPU 这几种,GPU 进程意外退出时,运行时向宿主应用上报的是 COREWEBVIEW2_PROCESS_FAILED_KIND_GPU_PROCESS_EXITED。
每一份属于哪个应用
进程页和详细信息页怎么看,Manager 那篇 已经讲过,对一行很忙的 GPU 进程来说有两点要紧。在进程页先按名称排序,FAQ 说按别的列排序时,挂在父应用下面的分组有时会乱。详细信息页里每一份都叫 msedgewebview2.exe,微软的任务管理器说明 写的是右键列标题,选 Select columns 来改显示的列,把命令行加上。上面那条反馈回复说,命令行里的 Type 和 Subtype 能看出这一份是 manager、渲染进程、GPU 进程,还是网络这类工具进程。Type 回答这份进程在干什么,进程页上的父应用回答它属于谁。
微软的 Microsoft 365 说明 用 Outlook 举了同一个画面,任务管理器里会看到好几份 WebView2 挂在 Microsoft Outlook 下面。FAQ 还提到 Process Explorer,运行 procexp.exe,上方窗口列出每个进程以及拥有它的账户。
CPU 和内存为什么高
FAQ 的说法是,多出来的内存或 CPU 通常取决于 WebView2 被怎么用,页面重,扛着页面的渲染进程和给整个文件夹做绘制的那一行共用 GPU 进程都会更贵。
页面开久了,占用可以超过第一次画出来的时候。性能说明写了,有些长时间开着的页面会留住资源,刷新 WebView 能回到一块干净的底子,也写了不少泄漏和高 CPU 的情况是在较新的运行时里修好的。它还建议把同一个情况在 Edge 和 WebView2 里各试一次来定位问题,两边用的是同一套引擎,在 Edge 里一样重,贵的就是页面本身,只有应用里冒出来的尖峰,问题在这个应用。
一直不退出的应用会停在旧的运行时上。分发页面 说新的 Evergreen 运行时在后台下载好,等应用重启才使用,一直开着的应用会继续用之前的版本。Microsoft 365 的说明把更新频率写在大约每月几次,体积通常在 5 MB 到 30 MB。
先退出应用,再让运行时换上新版本
- 在进程页按名称排序,读忙的那几行上面的父应用。要分辨单独某一行
msedgewebview2.exe的角色,去详细信息页看Type和Subtype。 - 退出这个应用。整组应该跟着它的浏览器进程一起消失,还留着的行属于另一组。同一个应用下面的行还在,说明它仍在运行。
- 再打开一次,后台已经下载好的运行时从这次启动开始使用。
- CPU 跟着同一个页面回来的话,到 Edge 里打开这个页面。FAQ 说,某个应用一直占用很重时,联系这个应用的技术支持。
在任务管理器里单独结束 GPU 那一行,运行时会把这次退出报告给宿主,接下来看到什么由宿主决定。Manager 那篇 讲了结束任务会怎样。应用自己要关掉这一组,按进程模型页面的说法,用的是控制器上的 Close。
Windows 11 上把运行时留着
删掉共用的运行时,并不会让很重的页面变轻。所有 Evergreen 应用共用这一份,删掉它,这些应用会一起停,等运行时回来,页面还是一样贵。FAQ 解释了卸掉之后为什么常常又回来,Windows 11 把它作为操作系统的一部分带着,很多应用在安装或启动时也会再装一遍。
对管理员,Microsoft 365 的说明还写了两点,取消自动安装的勾选不会删掉电脑上已经有的那一份,没有运行时,Outlook 里的 Room Finder 和 Meeting Insights 就用不了。另一个应用自己夹带的 Fixed Version 仍留在那个应用的文件夹里。为什么要留着、怎么确认装上了,见 WebView2 是什么,这些页面也没有按应用关闭 WebView2 的开关。
Windows 上的 Pake 窗口也是宿主
Windows 上的 Pake 应用跑在这份运行时上。安装要求 写明 Windows 11 已经自带,缺了的时候 Pake 会显示 Pake 生成的应用需要 Microsoft Edge WebView2 运行时,并给出指向微软下载页的 获取 WebView2。正在运行的 Pake 应用就是又一组 msedgewebview2.exe,这个窗口在 Pake 的工作原理 里有讲。
每个 Pake 应用有自己的 WebView2 配置,命令行参数 写明它不和 Chrome、Edge 共用。两个名字或标识符不同的 Pake 应用用的是两个文件夹,同时开着就是两组进程。桌面版做出来的应用按标识符给文件夹命名,所以改名不会丢掉登录。
在 Windows 上,常驻后台 会让应用关窗后留在托盘里继续运行,这项默认关着。开了之后,整组进程会留到你从托盘退出。移除这样的应用时如果它关不掉,Pake 会给出 结束应用,窗口里没保存的内容会丢,移除应用见 管理应用。用 GNU 工具链打出来的程序会在运行时加载 WebView2Loader.dll,MSI 里已经带着它。这个 DLL 负责加载运行时,和任务管理器里的 msedgewebview2.exe 不是同一个文件。
常见问题
每个页面都有自己的 GPU 进程吗
同一个用户数据文件夹里的视图共用一个 GPU 进程,另一个文件夹才会再有一个。文件夹内部变多的那一行,通常是渲染进程。
结束 GPU 进程之后,谁把它拉起来
运行时把这次退出报告给宿主应用,接下来看到什么取决于这个应用。运行时本身不论怎样都还装着。
Edge 里同一个页面已经很重,重启还有用吗
重启会用上已经下载好的运行时,也会丢掉长时间开着的视图攒下来的占用。在 Edge 里同样能看到的那部分开销,会跟着页面一起回来。
卸掉运行时,是不是每一份文件都没了
卸掉的是共用的 Evergreen 安装,Windows 11 和很多应用会把它装回来。另一个应用里的 Fixed Version 仍留在那个应用的文件夹中。
