JS DOM元素的内容字符串属性:当前引擎中的内存管理和计算

时间:2017-04-07 04:02:15

标签: string performance dom memory-management browser

在DOM中,NodeElement类型具有许多动态属性,例如Node.textContentElement.innerHTML,它们返回节点内容的字符串表示。 / p>

DOM规范仅声明这些方法只是“返回”DOMStrings,即string。但是,他们当然没有说明何时以及如何分配和计算这些字符串。对于文本节点,实现可以清楚地直接返回其纯文本字符串内容。但Element必须创建包含任何后代元素的标记和内容的新字符串。

据我所知,实现可以为这些字符串分配内存并在四个点计算它们的值:

  1. 立即首次创建Element
  2. 懒惰,在Element创建后的某个时间安排;
  3. 懒洋洋地,在从Element;
  4. 获取字符串属性时按需提供
  5. 或者懒洋洋地,无论何时首次使用字符串(即,返回的字符串使用一个特殊的,外部无法区分的实现,该实现由Element的字符串属性立即返回,但在需要时动态生成其值)。
  6. 这些方法还可以确定何时释放字符串的内存。前两种技术实质上将字符串缓存在Element对象中 - 它们创建了对Element中字符串的引用,并且在Element之前不会释放字符串。第三和第四种技术可能但不需要从Element创建这样的引用;只要其他引用被释放,字符串的内存可能会在Element之前很久就被释放。此外,实现可能会基于某种启发式使用两种,三种或所有这些可能性。

    现代浏览器引擎使用哪些技术?对于任何类型的DOM操作和文本检索,这个问题在计算时间和内存分配方面都有明显的性能影响。但据我所知,这些属性的性能特征未知或未记录。

0 个答案:

没有答案