Major GC

major GC는 old space를 관리
V8 엔진이 old space 에 여유 저장 공간이 없다고 판단때에 발동
minor GC 사이클을 통해 동적으로 계산
old space에서는 Mark-Sweep-Compact알고리즘을 사용
TRI-COLOR(white-grey-black) 혹은 삼색 마킹 시스템
 
큰사이즈 minor gc로 하면 안좋다
 
 
notion image
  1. Marking: 첫번째 스텝이며, active한 객체들과 그렇지 않은 객체들을 식별합니다. GC Roots(스택 포인터)로부터 접근 가능한 오브젝트들은 재귀적으로 active/alive 마킹되며, 깊이 우선 탐색 (depth first search) 알고리즘입니다.
  1. Sweeping: GC가 힙 메모리를 스캔하면서 active로 마킹되지 않은 객체들의 메모리 주소를 저장합니다. 이 공간들은 여유 공간으로 간주되어, 다른 객체 정보를 저장할 수 있게 됩니다.
  1. Compacting: Sweeping이후에 필요하다면, 살아남은 객체들이 되도록 같은 공간에 존재할 수 있도록 객체들의 주소를 이동시킵니다. 이 절차는 위에 멘션한 fragmentation을 줄이고, 새로운 객체에 메모리가 할당되는 절차의 퍼포먼스를 향상시킬 수 있습니다.
 
 
마찬가지로
Stop the world GC
이라서 단점 최소화를 위해 아래 4개 technique
V8 Incremental GC
V8 Concurrent marking
V8 Concurrent sweeping/compacting
V8 Lazy sweeping
 
 
 
 

Recommendations