자바스크립트 엔진에는 가지비 컬렉션을 수행하는 가비지 컬렉터가 존재한다.가비지 컬렉션이란, 쓰레기를 수집하는 것이다. 그게 무슨 뜻이냐, 더 이상 참조되지 않는 객체를 자바스크립트 엔진 내의 메모리 저장소인 '힙'에서 제거하는 것이다. 이 작업이 필요한 이유는 우리 컴퓨터의 운영체제가 브라우저에게 사용할 수 있는 일정 메모리를 할당하는데, 더 이상 사용하지 않는 객체가 계속 저장되는 메모리 누수가 존재하면, 결국 메모리 한계치를 넘었을 때 브라우저가 종료되기 때문이다.
가비지 컬렉터를 가비지를 정의하는 방법은 '참조되지 않은 객체'이다. 이게 무슨 뜻이지 코드로 확인하자.
let user = {name : "KIM"};
user = {name : "MIN"};
처음 user에 이름이 KIM인 객체를 저장했지만, 이후 이름이 MIN인 객체로 재할당했다. 따라서 더 이상 이름이 KIM인 객체를 참조하는 변수가 없는 것이다. 가비지 컬렉터는 해당 객체를 가비지로 판단하고 메모리(힙)에서 삭제한다.
가비지 컬렉터의 의도는 더 이상 사용되지 않는 객체를 메모리에서 없애 메모리 누수를 최소화 하는 것이다. 그러나 위에서 서술한 가비지의 선정 기준으로 인해, 더 이상 사용되지 않는 개체라 할지라도 여전히 참조하는 곳이 있다면, 가비지로 인식되지 못하고 메모리 누수 또한 발생한다. 따라서 이러한 가비지 컬렉션의 특징을 염두해 두고 자바스크립트 코드를 작성하는 것이 좋다.