A memory leak occurs when memory that is no longer needed is not released, causing memory usage to grow over time.
JavaScript uses garbage collection (mark-and-sweep), but GC can only free objects with zero reachable references.
Leak = Unintentional reference retention.