가비지컬렉션 (GC)
자바스크립트는 눈에 보이지 않는 곳에서 메모리 관리를 수행한다. 원시값, 객체, 함수 등 우리가 만드는 모든 것은 메모리를 차지하는데 쓸모 없어지게 된 자원들은 어떻게 처리할지 알아봅시다.
도달 가능성 (reachability)
자바스크립트는 도달 가능성 이라는 개념을 사용해 메모리 관리를 수행한다. 도달 가능한 값은 어떻게든 접근하거나 사용할 수 있는 값을 의미한다. 예를 들어 전역 변수에 객체가 저장되어 있다고 가정해보자. 이 객체의 속성이 또 다른 객체를 참조하고 있다면, 참조되는 객체는 도달 가능한 값이 된다. 그리고 이 객체가 참조하고 있는 다른 모든 것들도 도달 가능하다고 여겨진다.
💡 예시
let user = {
name: "John"
};해당 코드에서 user는 {name: "John"}이라는 객체를 참조하고 있다. 이 상태에서 user의 값을 null로 변경한다면?
user = null;이제 "John" 은 도달할 수 없는 상태가 되었다. 접근과 참조할 수 있는 방법이 모두 사라진 상태이다. 이 때 가비지 컬렉터 는 "John"에 저장된 데이터를 삭제하고 메모리에서 제거한다.
정리
- 가비지 컬렉션은 자바스크립트에서 메모리 관리를 수행해준다.
- 가비지 컬렉션은 엔진이 자동으로 수행하므로 개발자는 이를 억지로 실행하거나 막을 수 없다.
참고
가비지 컬렉션의 더 자세한 정보와 구현 알고리즘은 javascript info에서 확인할 수 있습니다.