Tauri 的内存占用之所以能做到极低,是结构性的,而不是靠“优化”挤出来的。核心原因只有一个:Tauri 没有内置 Chromium 内核。
Electron 应用的运行内存消耗,本质上等于“一个完整的 Chromium 浏览器实例 + Node.js 运行时 + 你的前端页面”。即使在闲置状态下,一个空白的 Electron 窗口也可能占用 150~300 MB 内存,这还没算上 V8 引擎的垃圾回收和渲染进程的开销。如果应用中打开了多个窗口,每个窗口通常又是一个独立的渲染进程,内存占用直接翻倍。
而 Tauri 的运行时内存模型截然不同:
- 利用系统 WebView
Tauri 不自己带浏览器引擎,而是直接使用操作系统内置的 WebView(Windows 的 WebView2、macOS 的 WKWebView、Linux 的 WebKitGTK)。这些 WebView 已经和系统深度集成,共享系统级别的渲染资源和字体缓存,不会有“重复加载引擎”的问题。一个刚启动的 Tauri 窗口,内存占用通常在 20~50 MB 之间,只有 Electron 的十分之一甚至更少。
- Rust 后端极省内存
业务逻辑由 Rust 编译的原生二进制负责运行,没有 V8 引擎解释 JavaScript 的消耗,也无需维护庞大的 Node.js 模块树。Rust 的内存管理是静态的,不会出现 JavaScript 引擎中常见的“内存碎片”或“GC 暂停”现象。对于需要长时间运行的工具类应用,内存曲线更平稳,不容易出现逐渐升高然后突然 GC 的毛刺。
- 多窗口内存友好
Electron 中每多开一个窗口,通常会新开一个渲染进程,内存成倍增长。Tauri 可以灵活配置窗口是共用同一个 WebView 进程还是新建,默认倾向于轻量共享,能有效控制总内存上升幅度。
实际测试对比
以一个仅显示“Hello World”的最简应用为例:
- Electron(v28)在 Windows 11 上刚启动时,进程内存约 120 MB;
- Tauri(v2)同样只显示一个空白页,内存约 18 MB。
实际开发的应用(如一个 Markdown 编辑器)差距会更明显:Electron 版运行内存 200~350 MB,Tauri 版稳定在 40~70 MB。
这对你有什么意义?
如果你开发的是需要常驻系统托盘、长期运行的效率工具、监控面板或内部系统客户端,Tauri 能明显降低用户的“内存焦虑”。用户不会因为你的应用占用过多资源而频繁关闭,甚至因为内存不足而影响其它程序的使用体验。对于企业分发来说,低内存占用也意味着在低配电脑或虚拟桌面环境中表现更流畅。
一句话总结:Tauri 不捆绑浏览器引擎,完全依赖系统原生渲染,让它能在任何平台上保持“轻若无物”的内存表现,这一点是自带 Chromium 的方案无法企及的。