RAM 价格飙升,但由于 Electron、Web 组件,流行的 Windows 11 应用程序正在使用更多 RAM

Enda

在 RAM 价格上涨的情况下,WhatsApp Discord 和 Teams 都会消耗更多 RAM

Windows 11 中一些最受欢迎的应用程序使用过多的 RAM,以至于会影响您的 PC 性能,而 RAM 价格飙升的事实使情况变得更糟。该问题是由于开发人员更喜欢 Web 应用程序而不是 Windows 上的本机应用程序的趋势造成的。

最近,Windows Latest 报道了 Discord、Teams 和新 WhatsApp 等 RAM 密集型应用程序的情况,即使在后台也是如此。这里的共同点是,这些都是以通信为中心的应用程序,正如您所期望的那样,即使您不使用它们,它们也需要保持活动状态。

然而,我们的测试证明,应用程序的本机版本(如旧版 WhatsApp)不会消耗大量 RAM。这些是 Windows 中最常用的一些应用程序,无论人们位于哪个域。

那么,为什么这些应用程序没有原生版本呢?对于这些公司来说,为最流行的桌面操作系统构建本机和优化版本有那么困难吗?

现在是谈论 RAM 使用的最佳时机,因为它对于 PC 和笔记本电脑来说是非常昂贵的硬件升级。随着美光科技的离开,情况变得更糟消费类内存业务

Windows 11 在推出时就因对 RAM 的要求较高而受到批评,但到了 2025 年,情况变得更糟,因为 Windows 中的主要通信应用程序像免费资源一样占用 RAM。

Discord 总是使用 1GB 左右的 RAM,并且很高兴地增加到 4GB RAM

Discord 在游戏玩家和在线社区中很有名,是最容易被攻击的,因为该公司已经承认了 RAM 问题。 Windows 客户端基于 Electron 构建,这意味着您正在运行 Chromium 浏览器实例加上 Node.js 作为桌面应用程序。您打开的每个服务器、频道和每个额外功能都会向该内部浏览器添加更多选项卡。

Discord 告诉用户,正常使用的 RAM 低于 1 GB,但在现实条件下,它可以达到 4 GB,此时该公司开始测试现在臭名昭著的“内存超过 4 GB 时自动重启”实验。

如果应用程序已打开至少一个小时,您闲置了 30 分钟,并且您没有在通话中,Discord 会在 24 小时窗口内默默地重新启动一次,以收回内存。

该公司解释称,重启是出于善意。然而,我们认为这是解决根本问题的创可贴。不管怎样,Discord 的开发人员一直忙于修复真正的内存泄漏,并声称高百分位数内存使用量减少了 5%。

参见:iToolab FixGo 评论:功能、优点、缺点和价格

话虽这么说,Electron 是适用于每个应用程序的完整浏览器堆栈,因此您的 PC 最终需要为渲染引擎、JavaScript 运行时和安全沙箱付费,只是为了渲染聊天 UI。

好消息是 Discord 想要解决问题,但坏消息是该公司并不完全有利可图,尽管已经进入这个行业10年了。因此,我们不能真正指望该公司投资原生应用程序。该公司也没有原生 macOS 应用程序。

WhatsApp 从一个快速的本机应用程序变成了一个缓慢的网络包装程序

Windows 版 WhatsApp 是另一种悲剧,因为它以前很好。旧版基于 UWP 和 WinUI 的客户端轻量、快捷,在 Windows 11 上感觉很自在。即使在日常使用频繁、有数百个聊天和活跃组的情况下,它通常也保持在 100MB 空闲状态下,当您快速滚动长对话时则保持在 250MB 左右。

然后 Meta 发布了作为 WebView2 包装器构建的新版本,它只需将 web.whatsapp.com 加载到基于 Chromium 的容器中。在我们的测试中,在您登录之前,新应用程序就已经占用了大约 300 MB 的 RAM。一旦聊天同步并且您开始滚动,它就会轻松跃升至 1.2 GB,CPU 使用率比以前高得多。

性能问题不仅限于 RAM。用户界面感觉它以低得多的帧速率运行,聊天切换有明显的延迟,即使在不错的硬件上,它也会留下持续的沉重感。关闭窗口实际上并不退出应用程序。它最小化到托盘并在后台保留一块 RAM,以便它可以通过服务工作人员接收通知,这是本机应用程序不需要的。

所有这一切都以“简化开发”和重用 Web 代码库的名义发生,但对于用户来说,这是直接降级。在 macOS 上,Meta 仍然提供原生 WhatsApp 应用程序。在 Windows 这个拥有更多用户的平台上,他们现在能做的最好的事情就是浏览器窗口。这纯粹是 Meta 的懒惰,而且公司也不是承担不起。

团队;就连微软也不在乎

然后是 Microsoft Teams,它从 Electron 迁移到 WebView2。这听起来像是纸面上的进步。然而,实际上,它仍然是一个网络应用程序。团队在闲置时通常占用大约 1GB RAM。

微软通过重组应用程序而不是重写它来承认这个问题。从 2026 年初开始,Teams 将引入一个名为 ms-teams_modulehost.exe 的新进程,该进程独立于主 ms-teams.exe 进程来处理调用功能。

这并没有改变这样一个事实:一切仍然在 WebView2 之上运行,而通常的嫌疑人则在后台运行。

如果从 Windows 中删除 WebView2 组件,Teams 将无法工作

我们不知道该如何评价这种情况,尤其是当 Microsoft 的企业客户确实依赖 Teams 进行日常通信时。

目前,我们预计微软不会关心其他开发人员是否创建本机 Windows 应用程序,或者他们是否将现有的本机应用程序转移到 Web 应用程序,就像 Meta 所做的那样。

事实是,如今的网络浏览器使用的 RAM 数量惊人,任何基于其构建的应用程序都会耗尽 RAM。其中最糟糕的是通信应用程序,因为它们实际上需要始终处于开启状态。

为什么每个现代 Windows 应用程序都使用如此多的 RAM

如今 Microsoft Store 上的大多数新 Windows 应用程序并不是真正的 Windows 应用程序,而是浏览器引擎。 Discord 使用 Electron。 WhatsApp 和 Teams 使用 WebView2。许多较小的应用程序都使用 PWA。但所有这些都有一个共同的特点:在应用程序中嵌入完整的 Chromium 运行时。

每个 Electron 应用程序都有自己的 JavaScript 引擎、GPU 渲染器、网络堆栈、音频管道和沙盒子进程。由于现代浏览器安全标准,即使是一个小的 UI 元素也可以生成另一个进程。每个聊天、服务器、频道、呼叫视图或设置面板实际上都是一个单独的沙盒世界。因此,随着功能并行运行,内存使用量会水平增长。

Teams 和 WhatsApp 使用的框架 WebView2 避免开放自己的 Chromium 副本,但设计仍然相似。您可能认为 Windows 上的新 WhatsApp 只是一个简单的聊天列表。实际上,它是一个微型浏览器选项卡,所有 Chrome 层都在底层运行。

新的 Teams 桌面架构

PWA 与 Windows 上的 Reddit 应用程序一样,其行为方式相同,因为它们也依赖于 Chromium 的多进程架构和后台服务工作者。

从技术上来说,WebView2 比 Electron 更好

由于每个 Electron 应用程序都像完整的浏览器一样打开,因此它会增加大小和 RAM 使用量,但在 Windows、macOS 和 Linux 上的跨平台行为将保持一致。 WebView2 应用程序使用 Windows 上现有的 Microsoft Edge (Chromium) 安装在本机应用程序中呈现 Web 内容。因此,它减少了开销和占用空间,因为它不打开自己的浏览器。当然,由于它与 Windows 绑定并且需要 Edge 运行时,因此在可移植性方面存在一些限制。

不管怎样,这些架构的低效并非偶然。开发人员知道这一点,并且它的存在是为了防止漏洞利用和安全问题。

现代浏览器实现进程隔离,以阻止恶意页面与用户正在查看的内容进行交互。他们将内存池划分到沙箱中。它们使渲染远离逻辑,使逻辑远离存储。这种额外使用资源就是我们为了安全而必须付出的代价。因此,当您选择浏览器引擎作为桌面应用程序的基础时,过多的 RAM 使用是不可避免的。

最重要的是,现代 JavaScript 框架占用了公平的 RAM 份额。大型包、繁重的差异算法、虚拟 DOM 层和客户端状态机都堆积在已经很高的浏览器 RAM 使用率之上。从本质上讲,即使是优化良好的 Web 包装应用程序也具有较高的基线内存使用量。

内存泄漏无处不在

当 JavaScript 引用未正确释放或事件侦听器随着时间的推移累积时,就会发生内存泄漏。当框架在其内部缓存中保持空闲对象处于活动状态时,这种情况很常见。当浏览器进程无法释放长时间运行的会话中的内存时,也会发生这种情况。

一旦内存泄漏开始,它们就会增长为数千兆字节的峰值,就像我们在 Discord 中看到的那样。这在 Electron、Chromium 嵌入式框架 (CEF) 和 WebView2 应用程序中很常见,而且复杂 JS 堆栈的调试工具远没有本机调试器那么成熟。

令人不安的事实是,我们知道公司会监控 RAM 使用情况,而他们所能做的就是推送可能修复小部分内存问题的补丁。但整个堆栈在抽象背后隐藏了太多内容。

你无法看到 Chromium 在低级别上做了什么。您无法强制其渲染器更积极地释放内存。您无法重写多进程模型。内存使用框架的优化程度是不可避免的限制。

为什么公司继续发布网络应用程序而不是本机应用程序

面对所有这些问题,您可能想知道为什么公司还要开发网络应用程序。难道他们不重视用户拥有流畅的用户界面吗?

最简单的答案就是成本。从技术上讲,单个 JavaScript 代码库只需很少的修改就可以在 Windows、macOS 和 Linux 上运行。雇用 JavaScript 开发人员比雇用 C++ 开发人员容易得多。

新员工入职速度更快,开发周期也更短。此外,团队将能够同时跨平台发布功能。大多数公司都面临着更快地发布应用程序的压力,而此时,开发本机应用程序并不是一个实用的解决方案。

公司还争论品牌一致性,说实话,这是毫无意义的。这个想法是,公司希望他们的用户界面在每个设备上看起来都相同。 Web 包装器可以做到这一点。但不同的操作系统平台有不同的外观,Windows 除外,这是另一回事了。举一个更好的例子,想想苹果的液态玻璃设计。整个操作系统都有这种设计,但如果一个品牌的应用程序看起来完全不同,就会影响体验。

最可悲的是,公司不再将 Windows 原生应用程序视为优先事项。我们已经看到 Meta 淘汰了 UWP WhatsApp,尽管它基本上运行良好。 Messenger 从 Microsoft Store 中完全消失。 Facebook 和 Instagram 现在是网络包装器。

就连微软也没有以身作则,因为Teams仍然是一个WebView2应用程序,而他们以262亿美元全现金收购的LinkedIn也只是一个Web包装器。

有趣的是,Windows 11 通知面板中即将推出的议程视图使用 WebView2 而不是本机 XAML/WinUI。这是微软作为网络包装器制作的操作系统的字面上的一部分。当您与它交互时,它甚至会使用更多的内存。指责其他 Meta 或其他公司有什么意义吗?

苹果享有更优化和原生的应用程序目录

苹果用户对低质量应用程序的容忍度要低得多。他们需要快速、流畅的原生体验。这种压力迫使开发者投资原生 macOS 应用,即使它更昂贵。更不用说在 macOS 上创建本机应用程序的难度了。

令人惊讶的是,开发 Windows 本机应用程序比 macOS 应用程序更容易,这是因为 Microsoft 提供了具有成熟框架(如 .NET、WPF 和 UWP/WinUI)的统一生态系统。所有这些都与 Visual Studio 紧密集成,并且还具有广泛的向后兼容性。

macOS 开发需要通过 Xcode 使用 Cocoa 和 Swift/Objective-C API,Xcode 具有更严格的沙箱、签名和 App Store 分发规则。 Windows 开发人员还可以获得更广泛的语言支持,并且更少的把关限制。正如预期的那样,由于 Apple 严格的生态系统和特定于平台的 API 的使用,macOS 开发人员必须应对更陡峭的学习曲线。

但Windows 用户已经习惯了基于网络的桌面软件,开发人员也意识到了这一点。只要应用程序可以运行,即使速度较慢,反弹也往往是温和的。因此,公司会通过减少投资来做出相应的反应。

这一切都是因为苹果最初不发售廉价电脑的原因。现在,他们的大多数客户都拥有更高的购买力,整个公司都被视为奢侈品牌,这就是为什么即将推出的廉价MacBook会让PC制造商非常头疼的原因。

资料来源:微软、苹果

说服公司及其开发人员为 Windows 编写本机代码,只是为了优化和减少 RAM 使用,因此当基于浏览器的模型更便宜、可以在任何地方发布并且用户不会抱怨太多时,就变得不切实际。

RAM 价格不断上涨,这一点不会改变

这一切发生的时机再糟糕不过了。在许多情况下,RAM 价格几乎翻了一番,这主要是由于普通消费者的供应减少、DDR5 定价周期激进,而其中最大的因素是人工智能数据中心产生的压倒性需求。内存制造商现在优先考虑这些高利润的企业芯片。

对于 Windows 应用程序的当前状态,没有什么神奇的修复方法。微软在这方面扮演着最大的角色,因为我们没有看到开发者获得任何好处。该公司可以再次推动开发人员使用本机工具,改进 WinUI 以使其更具吸引力,并通过解决 Windows 中长期存在的问题来表明核心系统质量仍然很重要。

如果 Windows 要进入一个基于浏览器应用程序的世界,该平台首先需要以身作则,为用户和开发人员提供更好的合作基础。

添加为首选来源


支持独立博客

支持 Ko-Fi
对 Patreon 的支持

提问(论坛)

WL通讯

WL通讯!

掌握最新的 Windows、IT 和 AI 更新。受到 50,000 多名订阅者的信赖。

姓名电子邮件免费加入