[javascript] 자바스크립트에서 사용되는 메모리 관리 기법의 동작 원리

자바스크립트는 가비지 컬렉션이라는 메모리 관리 기법을 사용하여 메모리를 관리합니다. 가비지 컬렉션이란, 더 이상 사용되지 않는 메모리를 자동으로 탐지하여 해제하는 기능을 말합니다. 이는 개발자가 명시적으로 메모리를 해제하지 않아도 됨을 의미합니다.

가비지 컬렉션의 동작 원리

  1. Reachability(도달 가능성): 가비지 컬렉션의 핵심 개념은 도달 가능성입니다. 어떤 값이 도달 가능한지 정의하여 도달 가능하지 않은 값은 가비지로 판단하고 메모리를 해제합니다.
    • 전역 변수는 항상 도달 가능한 상태입니다.
    • 함수 내부에서 선언한 지역 변수는 해당 함수가 호출 또는 참조되고 있을 때 도달 가능한 상태입니다.
    • 함수 내부에서 선언된 변수가 외부에서 참조되는 경우 해당 변수는 도달 가능한 상태입니다.
  2. Mark and Sweep(표시 및 청소): 가비지 컬렉션은 주기적으로 실행되며, 실행 시점에 실제로 메모리를 해제할 가비지를 결정합니다.
    • 모든 도달 가능한 객체를 표시(Mark)합니다.
    • 표시되지 않은 객체는 가비지로 간주되어 메모리에서 해제(Sweep)됩니다.
  3. 정리 단계(Compaction): 가비지 컬렉션 후에는 메모리 공간이 조각화될 수 있습니다. 이때 메모리 공간을 정리하는 단계인 컴팩션을 수행합니다. 컴팩션은 메모리 공간의 조각화를 최소화하여 메모리 사용을 최적화합니다.

가비지 컬렉션의 장단점

장점

단점

참고 자료