References — bi-04 DOM Internals & Object Lifetime
Primary sources first. In-tree Chromium docs beat any external source, including these modules.
Specification
- DOM Standard — nodes, trees, ranges, and the mutation algorithms that make
appendChildmore expensive than it looks. - Node tree · Shadow trees · Event dispatch
- CSSOM View — the properties that force layout when read (
offsetWidth,getBoundingClientRect).
Source
third_party/blink/renderer/core/dom/node.h— the node type hierarchy and its bit-packed flagscontainer_node.cc— insertion/removal, and the notifications they triggerelement.h
Object lifetime — Oilpan
- Oilpan: Blink's garbage collector —
Member<>,Persistent<>,Visitor, tracing. - Oilpan design
- V8 blog — Trash talk — the other heap. Understanding both is the point of fe-02 (sibling project), where a detached-DOM leak moved the JS heap by 0.10 MB while freeing 508 KB of DOM.
Related modules
- bi-05 — The binding layer — how a JS object and a Blink object stay associated, and who keeps whom alive
- bi-03 — HTML parsing — what builds the tree
- fe-02 — Memory model & leaks (sibling project) — the measured, application-level version of object lifetime
- fe-01 — Execution model (sibling project) — forced synchronous layout, measured at 86–98×
When a claim here proves stale, record it in PROGRESS.md section 7.