Much Ado About Offset Vectors
summary
Offset vector compaction gets a concrete implementation and evaluation: a family of OVCs is implemented in MMTk and OpenJDK 21 and benchmarked with DaCapo on a 16‑core, 32‑thread Zen4 machine. The paper introduces a branch-free algorithm for computing forwarding info, compares offset vector compaction variants (CLmall, CCL, vanilla) and a one-pass compactor, and finds branch-free variants win, CCL slightly outperforms CLmall, OVCs are competitive with semi-space/Immix and run the tightest heaps, and one-pass fails to speed up parallel runs due to synchronization overheads; artifacts are open source.
AI-written summary · about
chapters (14)
- 0:00Offset vector compaction intro
- 1:29Lisp 2 compaction
- 3:16Limitations of Lisp 2
- 4:21Offset vector compaction
- 6:29History of offset compactors
- 7:13First uses of offset compaction
- 9:40Why offset vector compaction
- 11:07Evaluating in MMTk
- 12:30Mark bit map handling
- 12:51Parallel performance vs canonical
- 14:37One-pass compactor analysis
- 17:23Why investigate offset compactors
- 18:26Where used today
- 19:08Q&A
