패스잇
프론트엔드 개발 · 중급

JavaScript의 가비지 컬렉션(Garbage Collection) 동작 방식에 대해 설명해주세요.

힌트 · Mark and Sweep 알고리즘과 메모리 누수 방지를 생각해보세요.

참조 카운트Mark and Sweep메모리 누수도달 가능성순환 참조

모범답안

JavaScript의 가비지 컬렉션은 더 이상 사용하지 않는 메모리를 자동으로 회수하는 기능입니다. JavaScript 엔진은 주로 "Mark and Sweep" 알고리즘을 사용합니다.

Mark and Sweep은 먼저 루트(root) 객체, 즉 전역 객체와 같은 도달 가능한 객체부터 시작하여 연결된 모든 객체를 "표시(Mark)"합니다. 그 후, 표시되지 않은 객체는 더 이상 사용되지 않는다고 판단하고 메모리에서 "제거(Sweep)"합니다.

초기에는 "참조 카운트" 방식도 사용되었지만, 순환 참조 문제 때문에 Mark and Sweep이 더 널리 사용됩니다. 순환 참조는 객체들이 서로를 참조하여 도달 가능하게 유지되지만, 실제로는 더 이상 필요하지 않은 경우를 말합니다.

가비지 컬렉션은 자동으로 이루어지지만, 개발자는 메모리 누수를 방지하기 위해 불필요한 전역 변수 사용을 줄이고, 이벤트 리스너를 적절히 제거하는 등의 노력을 기울여야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JavaScript 면접 질문

← JavaScript 면접 질문 전체 보기