JS - GC (Garbage Collector)


생각해보면 자바스크립트를 작성하며 무수히 많은 객체, 변수 등을 선언하고 이를 메모리에서 해제하는 작업을 대체로 하지 않았다.
자연스럽게 생각할 수 있지만 이는 JAVA와 마찬가지로 가비지 컬렉터가 열심히 일하고 있는 까닭이다.
GC(Garbage Collector)에 대해 간단히 알아보자.

메모리 삭제의 기준

GC도달 가능성(reachability) 여부를 가지고 메모리에서 삭제를 하는 작업을 진행하게 된다. 도달이 가능한지 판단하는 기준점은 루트부터이며, 루트에서 참조할 수 없는 값들은 메모리에서 삭제하는 방식이다.

내부 알고리즘: mark-and-sweep

최적화 기법

아래의 기법 외에 각 브라우저 엔진마다 세부사항 및 다양한 기법이 있을 수 있다.

  • generational collection(세대별 수집): 새로 생성된 객체는 생성 이후 제 역할을 수행 수 금방 쓸모가 없어지는 경향을 기반으로 새로운 객체를 위주로 확인하며 메모리에서 제거하며, 일정 시간 살아남은 객체는 오래된 객체로 분류하게 되며 덜 감시함

  • incremental collection(점진적 수집): 가비지 컬렉션을 여러부분으로 분리한 뒤 별로 작업을 진행, 추가 변경사항에 대한 추적을 하는 추가 작업이 필요하기는함

  • idle-time collection(유휴 시간 수집): CPU가 유휴상태일 때만 가비지 컬렉션을 실행

참조

모던 자바스크립트

Tags:

Categories:

Updated: