도달 가능한 객체 (Reachable Objects):
도달 불가능한 객체 (Unreachable Objects):
- 도달 가능한 객체가 아닌 객체는 도달 불가능한 객체로 간주됩니다.
- 도달 불가능한 객체는 어떤 부모 객체에도 참조되지 않으며, 접근할 수 없습니다.
가비지 컬렉션은 주기적으로 또는 필요할 때 실행됩니다. 브라우저의 JavaScript 엔진 또는 Node.js와 같은 JavaScript 환경에 따라 실행 시점이 다를 수 있습니다. 주요 실행 시점은 다음과 같습니다:
참조 카운팅 (Reference Counting):
마크-스웹 알고리즘 (Mark-Sweep Algorithm):
세대별 가비지 컬렉션 (Generational Garbage Collection):
- 일부 JavaScript 엔진은 세대별 가비지 컬렉션을 사용하여 객체를 여러 세대로 나누어 관리합니다. 새로 생성된 객체는 처음 세대에 속하고, 오랫동안 살아남은 객체는 점점 더 오래된 세대로 이동합니다. 이를 통해 가비지 컬렉션의 성능을 최적화할 수 있습니다.
요약하면, JavaScript의 가비지 컬렉션은 도달 가능한 객체와 도달 불가능한 객체를 판단하고, 그 후 필요한 시점에 실행됩니다. 가비지 컬렉션은 메모리 누수를 방지하고 메모리 관리를 효율적으로 처리하기 위한 중요한 메커니즘 중 하나입니다.