자바스크립트 엔진 내에서 가비지 컬렉터가 끊임 없이 동작하며, 모든 객체를 모니터링 하고 도달할 수 없는 객체를 삭제한다.
도달 가능한 값이란, 어떻게든 접근하거나 사용할 수 있는 값을 말한다. 도달 가능한 값은 메모리에서 삭제되지 않는다.
위와 같은 변수들을 루트(Root)라고 부르며 태생부터 도달 가능하기 때문에, 명백한 이유 없이 삭제되지 않는다.
루트가 참조하는 값이나 체이닝으로 루트에서 참조할 수 있는 값이 도달 가능한 값이다.
JavaScript에서 object를 참조하는 변수를 선언하면
변수에 stack 주소 값이 저장되고 → stack에 object 주소값이 저장되고 → heap에 object 값이 저장된다.
Object를 참조하는 변수가 없을 때 (도달할 수 없는 상태가 될 때), Garbage Colletor가 메모리를 해제한다.

John은 외부에서 들어오는 참조가 없으므로 도달 가능한 상태가 아니고, GC에 의해 메모리에서 삭제된다.
객체가 외부에서 들어오는 참조를 가지고 있는 것만으로 도달 가능한 상태인 것은 아니다.

John과 Ann은 서로를 참조하고, 두 객체 모두 외부에서 들어오는 참조를 가지고 있지만 도달 가능한 상태가 아니다.
왜냐하면, family라는 루트 객체를 참조하는 것이 아무것도 없기 때문이다.
섬 전체가 도달할 수 없는 상태가 되고, 객체 전부가 메모리에서 제거된다.