가비지 컬렉션

ding·2024년 7월 2일

가비지 컬렉션이란?

가비지 컬렉션은 프로그래밍 언어가 더 이상 사용하지 않는 메모리를 자동으로 회수하여 메모리 누수를 방지하고 애플리케이션 성능을 최적화하는 프로세스다.

가비지 컬렉션 동작 방식

JavaScript는 가비지 컬렉션을 위해 여러 가지 알고리즘을 사용하지만 가장 일반적인 알고리즘은 mark-and-sweep이다.

1. mark 단계

mark 단계에서 가비지 컬렉터는 호출 스택의 전역 개체 및 지역 변수와 같은 루트 개체 집합에서 시작하여 이러한 루트에서 연결할 수 있는 모든 개체를 반복적으로 표시한다. 연결 가능한 개체는 프로그램에서 계속 접근하거나 사용할 수 있는 개체다.

2. sweep 단계

도달 가능한 모든 객체가 표시되면 가비지 컬렉터는 sweep 단계로 진행된다. 이 단계에서는 메모리를 순회하여 mark 단계에서 mark되지 않은 모든 개체를 수집한다. 해당 개체는 도달할 수 없는 것으로 간주되어 안전하게 제거할 수 있기 때문이다.

효율적인 가비지 컬렉트를 위한 방안

1. 전역 변수 피하기

전역 변수는 애플리케이션 수명 동안 메모리에 유지되기 때문에 가능하면 지역 변수를 사용하는 것이 좋다.

2. DOM 참조 관리

이벤트 리스너를 추가하거나 DOM을 조작할 때 더 이상 필요하지 않은 경우 참조를 제거하고 리스너를 정리해야 합니다.

3. 데이터 구조 최적화

예를 들어 자주 추가하고 삭제해야 하는 컬렉션의 경우 Map과 Set을 사용하면 메모리 관리 측면에서 더 효율적일 수 있다.

4. 클로저 최소화

클로저는 더 이상 필요하지 않은 변수에 대한 참조를 유지할 수 있다.

0개의 댓글