[javascript] 가비지 컬렉션이 발생하는 시점과 동작 방식

가비지 컬렉션은 자바스크립트에서 메모리를 관리하는 프로세스입니다. 이를 통해 더 이상 사용되지 않는 객체 또는 값들을 식별하여 해제합니다. 이는 개발자가 메모리 관리에 대해 걱정할 필요 없이 코드를 작성할 수 있도록 해줍니다.

가비지 컬렉션의 동작 방식

자바스크립트 엔진은 가비지 컬렉션을 수행하기 위해 다양한 알고리즘을 사용합니다. 가장 일반적인 알고리즘은 “Mark and Sweep”입니다. 아래는 이 알고리즘의 동작 과정입니다.

  1. 마크(Mark) 단계:
    • 가비지 컬렉션은 루트(root) 객체들을 탐색하여 접근 가능한 모든 객체를 마킹합니다.
    • 루트 객체란 전역 객체, 실행 중인 함수의 변수 등과 같이 직접적으로 접근 가능한 객체를 의미합니다.
  2. 스윕(Sweep) 단계:
    • 마킹되지 않은 모든 객체를 해제합니다.
    • 이러한 객체들은 더 이상 접근할 수 없거나 필요하지 않은 것으로 간주됩니다.
  3. 가비지 컬렉션 완료:
    • 마킹되지 않은 객체들이 해제된 후, 가비지 컬렉션은 메모리를 확보하여 다른 용도로 사용할 수 있도록 합니다.
    • 이렇게 해제된 객체들은 추후에 가비지 컬렉션이 다시 수행되었을 때 다시 해제됩니다.

가비지 컬렉션이 발생하는 시점

자바스크립트 엔진은 가비지 컬렉션을 언제 수행할지를 결정합니다. 일반적으로는 다음과 같은 조건을 만족하는 경우에 가비지 컬렉션이 발생합니다.

결론

가비지 컬렉션은 자바스크립트의 핵심 기능 중 하나로, 개발자를 메모리 관리로부터 해방시켜줍니다. 하지만 가비지 컬렉션이 발생하는 시점과 동작 방식을 이해하는 것은 자바스크립트 성능 개선과 메모리 관리에 도움이 됩니다.