招贤纳士
我们急需浏览器渲染引擎/Flutter 渲染引擎人才,欢迎大牛们加入我们。
前言
对于前端或客户端开发者来说,Web 渲染引擎是个黑盒子,其中内存开销是开发者最关心的问题之一 - 一个网页、一个页面程序运行在 Web 渲染引擎中产生了多少内存,占用的内存其分布又是如何?本文的目的是站在 Web 渲染引擎开发者的角度,向读者介绍渲染引擎在运行时如何分配内存,希望能帮助读者解决疑惑,开发出质量更高的页面。
Web 渲染引擎的内存占用在单进程下的说明,分为按页面的前端视角、按适配的容器端视角两个角度来说明。
多进程模式下,绝大部分内存会”转移“到子进程。例如,当引擎开启 Renderer 多进程时,页面运行内存、内核缓存、页面临时内存将绝大部分转移到了 Renderer 子进程。当引擎开启 GPU 多进程模式后,GPU 显示内存的大部分(页端以及内核渲染所需部分)也将转移到 GPU 子进程。
因此,如果启用了 U4 内核的完整多进程模式,那么 U4 内核几乎不占用宿主(基于 U4 内核的客户端应用)的进程内存。
Web 渲染引擎内存占用说明
Web 渲染引擎运行时可能产生以下部分内存:
- 页面运行内存
- 内核