每当电脑内存占用飙升,Windows总是第一个被骂。但如果你打开任务管理器,看到Slack、Discord和VS Code同时运行时,操作系统的锅可能背得有点冤。这些应用全是Electron架构,每一个都在后台悄悄加载完整的浏览器引擎,只为跑一个聊天窗口或代码编辑器,内存自然被迅速吞噬。
Electron把两套本来不搭的软件绑在一起:谷歌Chromium浏览器内核和Node.js。开发者可以用JavaScript、HTML和CSS写桌面应用,不用为每个操作系统单独写代码。但代价是,每个Electron应用内部至少运行两个进程:主进程能访问文件系统、硬件和操作系统;渲染进程负责画出界面,本质上是网页。
打开网易新闻 查看精彩图片
出于安全,渲染进程与系统隔离,只能通过通信层和主进程传递消息。为了让Chromium和Node.js两套事件系统不打架,背后还需要额外的线程调度。更致命的是Electron的臃肿:原生应用可以共享系统已加载的库,Electron应用却做不到。每个应用都打包一份自己的浏览器副本,互不共享。打开一个Electron应用,实际上等于启动一整个浏览器框架。几个应用叠加,RAM占用轻松突破2GB并不夸张,多开几个内存告急几乎是必然。
热门跟贴