现代Web浏览器如何优化标记使用的内存?

时间:2015-07-26 20:58:50

标签: html dom memory webkit gecko

我已经非常彻底地阅读了this对网络浏览器内部的描述,尽管它有点过时了。

根据此描述,每个HTML元素在内部由三个对象表示 - 文档标记,其渲染器(通常每个标记一个)和css样式上下文。针对css样式上下文描述了各种优化,这在天真的实现中可能非常大(可能是几千字节)。

然而,这些优化似乎还不够 - 现代浏览器现在可以处理非常大的文档(数万行),而且速度和速度都很高。内存使用率低。某些元素(例如<br>)似乎不需要每个实例的渲染器或样式。此外,github上的长程序列表似乎使用了每个行具有嵌套元素的三个表格单元格,因此必须进行一些非常好的优化。

那么,问题是:在现代浏览器引擎中使用了哪些其他内存优化来表示HTML元素?

问题只是关于实际实现的内存优化,而只是关于元素表示,而不是javascript或浏览器的任何其他方面,所以我怀疑只有少数聪明的技术。

以下是我能想到的一些优化措施:

  1. 标签(例如<span>):实习名称。使用内部链接的元素列表(前向和后向指针)来避免外部列表的开销。
  2. 渲染器:a)由于渲染器实现CSS Box Model或许是一种在边距/边框/填充为零时消除内存使用的方法?或者当它们在盒子上相同时? b)消除<br>等简单对象的单独渲染器?
  3. CSS样式:这是在本文开头引用的文档中写的:a)将样式划分为单独的结构,当没有覆盖声明时,可以单独共享或继承这些结构。 b)每个元素有多个结构的开销是多少?仅指针空间就会加起来 - 例如如果每个元素有10个结构(例如字体样式,表格样式,边框样式等),即使它们是共享的,也意味着每个元素有10个指针 - 64位系统上有80个字节。)

0 个答案:

没有答案