Mark & Sweep GC


### 루트에서 접근 가능한 메모리는 active, 나머지는 기비지

[CMS Collector](https://texonom.com/cms-collector-5893234d493d4a9a8e14b4a392d44827)

**active root 에 원치 않는 참조가 포함되어있다면, 필요 없는 메모리가 할당된 만큼 메모리 누수가 발생**

2단계 가비지 컬렉션 알고리즘
1. Mark: GC 루트 목록을 생성합니다. 자바스크립트의 경우 `window`객체가 루트로 작동하는데, 루트란 코드에서 참조되는 전역 변수를 뜻합니다. 모든 루트들은 `acitve` 혹은 `alive`(가비지가 아님)로 표시되며, 이들의 자식들 또한 재귀적(recursively)으로 동일하게 처리됩니다. 즉, 루트에서 접근 가능하다면 가비지가 아니라고 판단됩니다.
2. Sweep: `active`로 표기되지 않은 메모리를 모두 가비지로 간주하여 반환합니다.


> [자바스크립트와 V8 엔진의 메모리 관리 프로세스](https://medium.com/naver-place-dev/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%99%80-v8-%EC%97%94%EC%A7%84%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-f45091e696e1)





