Files
2nd/00_Raw/Garbage Collection.md
T

3.0 KiB

Garbage Collection

📌 Brief Summary

가비지 컬렉션(Garbage Collection)은 자바스크립트 엔진과 브라우저가 더 이상 필요하지 않은 메모리를 자동으로 회수하는 프로세스입니다 [1, 2]. 페이지의 DOM 트리나 자바스크립트 코드에서 어떠한 참조도 남아있지 않은 객체나 노드만이 가비지 컬렉션의 대상이 됩니다 [2, 3]. 브라우저가 가비지 컬렉션을 수행하는 동안에는 모든 스크립트 실행이 일시 중지되므로, 이 작업이 너무 빈번하게 발생하면 애플리케이션의 잦은 멈춤이나 성능 지연을 유발할 수 있습니다 [1].

📖 Core Content

  • 가비지 컬렉션과 메모리 누수(Memory Leak): 자바스크립트 애플리케이션에서 가비지 컬렉터는 참조되지 않는 메모리만 회수합니다 [2]. 만약 화면(DOM 트리)에서는 제거되었지만 자바스크립트 변수나 클로저 등에 의해 여전히 참조되고 있는 '분리된 DOM 노드(Detached DOM nodes)'가 있다면, 가비지 컬렉터는 이를 회수할 수 없어 메모리 누수가 발생하게 됩니다 [3, 4].
  • 성능 문제 식별: 가비지 컬렉션이 진행되는 동안에는 스크립트 실행이 멈추기 때문에 잦은 가비지 컬렉션은 UX에 악영향을 미칩니다 [1]. Chrome 작업 관리자나 타임라인 메모리 기록에서 메모리 사용량이 계속해서 빠르게 오르내리는(rising and falling) 패턴이 나타난다면, 가비지 컬렉션이 너무 자주 발생하고 있다는 신호입니다 [5].
  • 디버깅 및 모니터링 기법: Chrome DevTools를 사용하여 메모리 문제를 추적할 때, 기록을 시작하고 끝낼 때 가비지 컬렉션을 강제로 실행하는 것이 좋은 습관입니다 [6]. 메모리 탭에서 '휴지통(Collect garbage)' 아이콘을 클릭하여 가비지 컬렉션을 수동으로 트리거할 수 있으며, Chrome을 --expose-gc 플래그와 함께 실행했다면 콘솔에서 window.gc()를 호출하여 프로그래밍 방식으로도 강제 실행할 수 있습니다 [6-8].
  • 예방 및 최적화 전략: 메모리가 정상적으로 가비지 컬렉션되도록 하려면 적절한 자료구조를 선택해야 합니다. 예를 들어, 객체 캐시를 관리할 때는 일반 객체 대신 WeakMap을 사용하면 참조가 가비지 컬렉션을 방해하지 않게 하여 메모리 누수를 예방할 수 있습니다 [9].

🔗 Knowledge Connections


Last updated: 2026-04-26