JavaScript engines use Mark-and-Sweep garbage collection. Objects that cannot be reached from GC roots are reclaimed. Memory leaks occur when unused objects remain referenced.
js
// Detach listeners to prevent memory leaks
window.removeEventListener("scroll", handler);