Skip to main content

Garbage collection

Reachability

In JavaScript garbage collection is implemented through something called reachability.

Variable that are reachable are kept in memory and not deleted by the garbage collector.

A value is considered to be reachable if it's reachable from a root by a reference or by a chain of references.

However, if an object is not reachable anymore, then it will be deleted by the garbage collector.

Example
let user = {
  name: "John"
};

Let's say we have this global variable user referencing to the object {name: "John"}. If user = null; then the reference to "John" is deleted, thus the object "John" becomes unreachable. It will be garbage collected.

Example
let user = {
  name: "John"
};

let admin = user;

Here, we have two references that points to the "John" object. If user = null; the garbage collector will not delete "John" because it is still reachable via admin.