Concurrency

Garbage collection

Automatic reclamation of unreachable memory.


In plain terms

Mark-sweep, generational, tri-color, concurrent. Java's G1, ZGC, Shenandoah; Go's tri-color concurrent collector; .NET's server GC.

Origin

John McCarthy described mark-and-sweep for Lisp in 1959. Modern concurrent collectors (G1, ZGC, Shenandoah, Go's tri-color) trace their lineage to Dijkstra et al.'s 1978 on-the-fly garbage collection paper.

Where it shows up in production
  • Go Concurrent tri-color collector; target sub-millisecond pauses since Go 1.5 (2015).
  • JVM (G1, ZGC, Shenandoah) ZGC and Shenandoah target sub-10ms pauses even on multi-terabyte heaps.
  • V8 Generational with Orinoco — most allocations die young in the new space, never reach the old generation.
On Semicolony
Sources & further reading
Found this useful?