
JS 엔진 내에서 가비지 컬렉터는 끊임없이 동작한다. 가비지 컬렉터는 모든 객체를 모니터링하며, 도달할 수 없는 객체는 삭제한다.
mark-and-sweep
generational collection(세대별 수집) : 객체는 생성 이후 대부분 제역할을 빨리 수행해 쓸모없어지는데, 이것을 '새로운 객체'로 구분하고 나머지는 '오래된 객체'로 구분한다. 가비지 컬렉터는 '새로운 객체'를 공격적으로 메모리에서 제거하고, '오래된 객체'는 덜 감시한다.
incremental collection(점진적 수집) : 방문할 객체가 많으면 한 번에 방문하고 mark하는데 상당한 시간이 소요된다. 리소스 증가로 실행 속도도 느려진다. 자바스크립트 엔진은 가비지 컬렉션을 여러 부분으로 분리하고 각 부분을 별도로 수행한다. 긴 지연이 짧은 여러 개의 지연으로 분리된다.
idle-time collection(유휴 시간 수집) : 가비지 컬렉터는 CPU가 유휴 상태일 때만 가비지 컬렉션을 실행한다.