질문 35 · 실전 면접 답변
호출 스택과 힙은 각각 무엇을 설명하나요?
이렇게 답해 보세요 (핵심 답변)
호출 스택(Call Stack)은 현재 실행 중인 함수들의 호출 순서와 복귀 지점을 후입선출(LIFO) 구조로 관리하는 모델이고, 힙(Heap)은 객체나 배열, 클로저 환경처럼 크기가 동적으로 변하고 함수 호출이 끝난 뒤에도 살아남을 수 있는 데이터가 저장되는 메모리 영역을 설명하는 모델입니다. 재귀 호출이 종료 조건 없이 깊어지면 호출 스택 한도를 넘어 RangeError(Maximum call stack size exceeded)가 발생하고, 힙에 할당된 객체의 참조를 계속 붙잡고 있으면 메모리 사용량이 늘어납니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 함수가 종료되어 호출 스택에서 프레임이 사라져도, 그 안의 환경을 클로저가 참조하고 있다면 해당 데이터는 힙에 계속 유지됩니다.
- 현재 호출 스택에 쌓인 동기 실행 프레임이 모두 비워져야 이벤트 루프가 대기 중인 다음 콜백을 실행할 수 있습니다.
면접에서 자주 하는 실수
원시값은 무조건 물리적 스택에, 객체는 무조건 힙에 저장된다는 식의 설명은 단순화한 비유일 뿐 실제 JS 엔진의 최적화 방식과는 다를 수 있습니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 35번을 바탕으로 질문과 답변을 새로 정리했습니다.