목록 보기
자바스크립트 v8 엔진의 가비지 컬렉션 동작 방식
프론트엔드

자바스크립트 v8 엔진의 가비지 컬렉션 동작 방식

두줄요약

V8 엔진의 세대별 힙 구조와 마이너·메이저 가비지 컬렉션 흐름을 설명했습니다. Orinoco 기술로 stop-the-world 시간을 줄이는 방식을 정리했습니다.

구조와 흐름

  • 스택·힙 분리와 New space·Old space 중심의 V8 힙 구조
  • 새 객체의 semi space 할당, 생존 객체의 대피와 Old space 승격 흐름
  • 세대별 객체 수명 차이를 활용하는 Generational Hypothesis

핵심 내용

  • New space의 마이너 GC에서 생존 객체를 To space로 복사하고 공간 역할을 교체하는 Scavenger 방식
  • Old space의 메이저 GC에서 Roots 기반 DFS와 Tri-color 마킹, 스위핑, 압축 수행
  • 참조되지 않는 객체를 수집 대상으로 판별하는 GC 기준

성능/운영 포인트

  • semi space 간 연속적 대피를 통한 메모리 단편화 완화
  • Mark-Sweep-Compact의 free-list 재사용과 단편화 페이지 재배치
  • stop-the-world 완화를 위한 Orinoco의 Parallel·Incremental·Concurrent·Idle-time GC

적용해볼 점

  • 힙의 불필요한 객체 미해제에 따른 메모리 누수와 성능 저하 인지
  • V8 메모리·GC 이해를 바탕으로 효율적 메모리 사용과 프로그래밍 패턴 검토

카카오 계열사 채용30건

채용 사이트에서 전체 보기

다음 읽기

#JavaScript 주제를 이어서 읽기

자바스크립트 v8 엔진의 가비지 컬렉션 동작 방식

V8의 New·Old space 기반 세대별 가비지 컬렉션 구조를 설명했습니다. 마이너·메이저 GC와 Orinoco의 지연 완화 기법을 정리했습니다.

카카오엔터테인먼트FE
카카오엔터테인먼트FE
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...