자바스크립트 엔진은 자바스크립트를 실행할 때 원시타입 과 참조타입을 저장하는 메모리 구조를 가진다.
콜스택
- 원시타입 값, 실행 컨텍스트를 저장하는 곳이다.
힙
- 객체, 배열, 함수의 크기가 동적으로 변할 수 있는 참조 타입 값을 저장하는 곳이다.
동작 순서
- GEC (Global Execution Context)가 생성된다.
- 원시 값은 콜 스택에 올라간다.
- 참조 값은 힙에 저장된다.
- 함수를 실행하면 FEC(Function Execution Context)가 생성된다.
- 원시 값은 콜 스택에 올라간다.
- 참조 값은 힙에 저장된다.
- 함수가 리턴되고 더 이상 참조되는 곳이 없으면 FEC는 콜스택에서 제거된다.
- 콜스택에 올라온 FEC 해당하는 코드들이 전부 실행 한다.
- 남은 FEC가 없으면 GEC가 콜스택에서 제거된다.
- 힙의 객체를 참조하는 스택의 값이 사라진다.
- 가비지 컬렉터의 의해 제거된다.
https://speakerdeck.com/deepu105/v8-memory-usage-stack-and-heap?slide=10