🟢 메모리 구조
![](https://velog.velcdn.com/images/choisooyoung-dev/post/5913ed46-0b64-4445-8783-d4e4b52fe935/image.png)
- 프로그램을 실행시키면 운영체제는 실행한 프로그램을 위해 메모리공간을 할당해준다.
- 할당되는 장소: 메인 메모리(RAM)
- 할당되는 용도: 프로그램 실행 시 필요한 메모리 공간을 지정하기 위해서
- 스택, 힙, 데이터 영역으로 나뉜다.
1. 데이터 영역
![](https://velog.velcdn.com/images/choisooyoung-dev/post/9d2027a7-36be-4c44-95bd-3ec06b1518b7/image.png)
- 정적메모리
- 프로그램이 종료될 때까지 지워지지 않을 데이터 저장
- 전역 변수, static 변수, 상수 등
2. 스택 영역
- 자동 메모리
- 잠깐 사용하가 삭제하는 데이터 저장(지역변수, 매개변수)
- 해당 객체가 정의된 블록(스코프) 벗어날 때 소멸한다.
- 함수의 호출하는 위치도 저장한다.
- 힙보다 빠름
3. 힙 영역
- 자유 저장소
- 가바지 컬렉터가 없으면 프로그래머가 직접 관리 해줘야한다.
- 스택보다 큰 메모리를 할당받기 위해 사용한다.
- 동적 메모리 할당
- 스택보다 느리다.
🟢 Javascript에서의 콜스택 메모리 힙 구조
![](https://velog.velcdn.com/images/choisooyoung-dev/post/5d26f07b-0151-4fca-9bd0-c9b62b1dc660/image.png)
- 자바스크립트 엔진은 메모리 힙과 콜 스택으로 구성되어 있다. (구글 V8)
- 단일 스레드 프로그래밍 언어 즉, 콜 스택이 하나
- 멀티가 되지 않고, 하나씩 처리한다.
1. 콜 스택
- 원시 타입 데이터가 저장된다.
- 실행 컨텍스트를 통해 변수 식별자 이름 저장, 스코프 체인 및 this 관리, 코드 실행 순서 관리 등을 수행한다.
2. 메모리 힙
- 참조 타입 데이터가 저장된다.
- 메모리 할당이 일어나는 곳
![](https://velog.velcdn.com/images/choisooyoung-dev/post/a1aca88a-318e-4da8-90a1-d007069ffd92/image.png)