mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

javascript

Garbage Collection.

Mark-and-Sweep, Generational GC, V8의 GC 전략과 프론트엔드 관점

JavaScript 엔진은 더 이상 도달할 수 없는(unreachable) 객체를 자동으로 찾아 메모리를 회수합니다.

🧹 Mark-and-Sweep (기본)

가비지 컬렉션 도달 가능 객체 그래프

  1. Root (global, Call Stack, 클로저 등)에서 출발
  2. 참조 그래프를 따라 도달 가능(reachable) 객체 표시
  3. 표시되지 않은 객체 회수
  • Reference Counting은 순환 참조를 못 치워서 JS에서는 주 방식이 아님.

🧹 Generational GC (V8 등)

세대특징
Young Generation새 객체. Scavenge(복사) GC. 자주, 빠르게
Old Generation오래 산 객체. Mark-Sweep-Compact. 덜 자주
  • Minor GC: Young만
  • Major GC: Old 포함, STW(Stop-The-World) 구간 발생 가능

💻 프론트엔드 관점

  • 짧게 쓰고 버리는 객체는 Young에서 빠르게 정리됨.
  • 전역, Map, 이벤트 리스너, 클로저가 오래 붙잡는 참조가 Old로 밀려 Major GC 부담.
  • DevTools Memory 탭으로 Heap snapshot, allocation timeline 확인.

🔗 참고 자료