Remove event listeners when done, clear timers (clearInterval, clearTimeout), do not close over large objects unnecessarily, use WeakMap/WeakSet for caches, null out references when no longer needed, avoid global variables, and bound cache sizes (LRU).
How can you help the garbage collector in JavaScript?
More FAQs in Garbage Collection in JavaScript (V8) Explained
V8 uses generational mark-and-sweep (Orinoco). New objects are in the young generation (collected frequently via scavenge). Surviving objects are promoted to the old generation (collected less frequently via mark-sweep-compact). The GC is incremental and concurrent to minimize pauses.
Most objects die young (temp variables, intermediate results). So collecting the young generation frequently is cheap and effective. Old objects are collected less frequently because they tend to survive longer.
V8's modern GC that uses incremental and concurrent marking and sweeping to reduce pause times. Instead of a long stop-the-world pause, marking is done in small steps interleaved with JS execution, and sweeping happens on a background thread.
Still have questions?
Browse all our FAQs or reach out to our support team
Want to upskill yourself?
Your learning library
Small steps. Big possibilities.
Find your next course. Build something great.