![Firefox 消耗大量内存](https://linux22.com/image/1594249/Firefox%20%E6%B6%88%E8%80%97%E5%A4%A7%E9%87%8F%E5%86%85%E5%AD%98.png)
答案1
播放视频和显示“简单”的网页并不像您想象的那么容易。
YouTube 是一个尤其要求相当严格的网页。
- 它具有高度的动态性,包含几大部分评论(可扩展并包含子菜单和动态出现的“添加评论”框)
- 它有大量的“推荐”视频,所有这些都相当于完后还有浏览器加载并显示给您的图像。
- 它的主区域可以有多种不同类型的视频,并且需要能够播放 hevc、h.264、webm 和其他一些视频。所有这些都需要浏览器中的某个程序才能播放,以及相关缓冲区来下载数据并将数据传递到您的显卡。如果您的显卡缺少所选格式的硬件视频解码,那么浏览器必须自己解码视频并使用更多内存。
- 当您在网站内导航时,网页不会完全卸载,它具有大量动态自我管理和导航功能。
- 有数个(数十个,甚至更多)JavaScript片段正在运行,执行从处理鼠标事件到广告跟踪等所有操作。
- 您看到的所有数据都必须由浏览器处理,并以某种方式进行处理,然后才能交给您的显卡。
- 该网页设计用于从 1280*720 到最新的 4k 和 8k 分辨率,并且可以加载更大分辨率的元素或依赖于光栅图像(这相当于另一种需要解码和查看的格式 - 更多代码和缓冲区)
- YouTube 还会使用代码来检查您的速度,一旦发现连接速度符合要求,它可能会先从较低质量的流媒体开始,然后预缓冲高质量流媒体,反之亦然。对于相同数量的视频,这可能需要下载和缓冲更多数据。
所有这些都意味着图书馆很多处理大量元素的工作。所有这些元素都占用 RAM 来跟踪、缓冲数据和处理。
这样一来,现代浏览器就更像是网络应用程序的容器或主机。网络不再“仅仅”是文本和图片,浏览器实际上是一个完整的网络“操作系统”,可以处理所有网络“程序”的显示和运行。
即便是微软引以为豪的“高效”网络浏览器 Edge,在我使用过的机器上,仅仅查看 SuperUser 和 YouTube 也要消耗 1GB 以上的 RAM。
由于现代浏览器为了显示网页必须进行大量工作,因此人们付出了大量的努力来使其运行速度更快,并且更可靠、更安全。
Firefox 量子是 Mozilla 的答案,它使用多个进程来处理下载、页面处理、视频处理和显卡渲染。Chrome 和其他现代浏览器都使用类似的方法。缺点是重复的内存结构和必要的进程间通信存在一定程度的“膨胀”。
富媒体网络和由此产生的大型浏览器要求是 4GB 不再被认为足以满足正常使用需求的原因,并且仅推荐用于“轻度”使用。