1. Heap(힙)
Heap은 동적으로 할당되는 메모리 영역으로, 객체와 배열과 같은 복합 데이터 타입이 저장되는 곳입니다.
Heap의 데이터는 크기가 동적으로 결정되기 때문에 메모리 공간이 필요한 만큼 동적으로 할당되고, 필요하지 않은 메모리는 가비지 컬렉터(garbage collector)에 의해 자동으로 해제가 됩니다.
※ 메모리 생존주기
- 필요할때 할당
- 할당된 메모리를 사용 (읽기, 쓰기)
- 더 이상 필요하지 않으면 해제
2. Stack(스택)
Stack은 정적으로 할당되는 메모리 영역으로, 함수 호출 시 함수 내의 변수, 매개변수, 복귀 주소 등의 정보가 저장되는 곳입니다.
함수가 호출될 때마다 스택 프레임(stack frame)이 생성되고, 함수가 종료될 때마다 스택 프레임이 제거됩니다.
이를 스택(stack)이라고 부릅니다.
3. Queue(큐)
Queue는 자바스크립트에서는 일반적으로 메모리 구조로 사용되지 않지만, 자바스크립트에서 비동기(asynchronous) 처리를 위해 사용되는 자료 구조입니다. 비동기 처리에서는 작업을 처리하는 순서가 보장되지 않기 때문에, Queue를 사용하여 작업을 순차적으로 처리합니다. 작업이 Queue에 추가되면, 이벤트 루프(event loop)가 이를 처리하기 위해 대기하다가, 이전 작업이 완료되면 Queue에서 다음 작업을 가져와 실행합니다.
이러한 Heap, Stack, Queue는 자바스크립트의 동작 방식과 메모리 관리를 이해하는 데 매우 중요합니다.
특히 Heap과 Stack은 자바스크립트 엔진의 메모리 관리 방식을 이해하는 데 중요하며, Queue는 비동기 처리와 이벤트 처리를 이해하는 데 중요합니다.
'Programming > JavaScript' 카테고리의 다른 글
[JavaScript] 이벤트 루프(event loop) 란??? (0) | 2023.05.09 |
---|---|
[JavaScript] 비구조화 할당이란 (분해 구조화) / 배열, 객체에서의 비구조화 할당 (0) | 2023.04.13 |
[JavaScript] 화살표 함수(Arrow function)란 ?? 화살표 함수에서 this 바인딩 (0) | 2023.03.31 |
[JavaScript] blocking / non-blocking, 동기 / 비동기 (0) | 2023.03.30 |
[JavaScript] async / await 와 promise란?? (0) | 2023.03.28 |