정리/Question
JavaScript 엔진 구조
kimddakki
2022. 5. 16. 13:35
JavaScript 엔진 구조 (Call Stack, Memory Heap)
JavaScript 엔진은 Call Stack과 Memory Heap으로 구성되어 있습니다.
JavaScript는 싱글 스레드로서 한 번에 하나의 작업만 처리하는 언어입니다. = 하나의 Call Stack을 가지고 있다.
하여 JavaScript는 이벤트 루프를 사용해 동시성(Concurrency)를 지원합니다.
1. Call Stack(호출 스택)
Call Stack에는 원시 타입 값과 실행 컨텍스트( Execution Context )가 저장됩니다.
코드 실행에 따라 호출 스택이 쌓이는 곳
2. Memory Heap(메모리 힙)
메모리 할당이 일어나는 곳
Memory Heap에는 참조 타입( 객체, 배열, 함수 ... ) 등이 저장 됩니다.
Heap은 동적으로 데이터를 할 당할 수 있는 메모리 영역입니다.
=> 크기를 예측하기 힘든 참조 타입을 저장하기에 적합한 구조가 됩니다.
3. 데이터 저장 순서
- 원시 타입 데이터
값 : 원사티임 값 자체는 Call Stack에 저장합니다.
변수 : 변수는 값이 저장 된 Call Stack 메모리의 주소를 참조합니다.
- 참조 타입 데이터
값 : 참조 타입( 객체, 배열, 함수... ) 는 Memory Heap에 저장합니다.
Memorty Heap 참조 값 : 저장된 Memory Heap의 쥐소를 Call Stack에 저장합니다.
변수 : 변수는 Memory Heap 주소가 저장된 Call Stack 메모리의 주소를 참조 합니다.