자바스크립트 v8 엔진의 가비지 컬렉션 동작 방식
두줄요약
V8의 New·Old space 기반 세대별 가비지 컬렉션 구조를 설명했습니다. 마이너·메이저 GC와 Orinoco의 지연 완화 기법을 정리했습니다.
구조와 흐름
- V8 힙의 New space·Old space 분리와 세대별 객체 관리
- New space의 두 semi space 간 객체 대피와 생존 객체의 Old space 승격
- Old space의 Pointer space·Data space 구분
선택 이유
- 신규 객체의 짧은 생명주기를 전제로 한 Generational Hypothesis
- New space의 빠른 마이너 GC와 대용량 Old space의 메이저 GC 분리
성능/운영 포인트
- 마이너 GC의 객체 이동을 통한 메모리 단편화 완화
- 메이저 GC의 Mark-Sweep-Compact와 tri-color 마킹
- Parallel·Incremental·Concurrent·Idle-time GC를 통한 stop-the-world 시간 완화
주의할 점
- 힙의 불필요한 객체 미해제로 인한 메모리 누수와 성능 저하
- 참조 가능 여부를 기준으로 한 GC 대상 판단




