JS 코드의 실행 과정!
Excution Context
- JS엔진이 JavaScript 코드를 실행할 때 컴퓨터로부터 할당받은 메모리 공간에 필요한 정보(코드, 변수, 함수)를 저장해 두는 공간
Excution Context의 종류
1. Global Executiaon Context
- js코드를 실행시키게되면 기본적으로 생성하는 Context
- 현재 실행되는 코드에서 함수"안"에 있지않은 모든 정보를 담는다
- js 프로그램마다 단 하나의 GEC만 존재가능
- js 코드 실행이 마무리 될때까지 존재
2. Function Executiaon Context
- js코드를 실행중 함수가 실행될때마다 생성되는 Context = 여러개 생성가능
- 현재 실행되는 함수의 인자값과 그 안에서 선언된 모든 정보를 담는다
3. Garbage Collection 과 Memory 해제
- 참조 횟수(Reference count)가 0이 된 개체(변수,함수)는 주기적으로 메모리에서 지운다
- Mark and sweep 알고리즘 사용
Mark and sweep 알고리즘?
Mark and sweep 알고리즘은 가비지 컬렉션 알고리즘 중,
메모리 관리를 위해 사용되는 알고리즘 중 하나이다.
이 알고리즘은 동적으로 할당된 메모리에서 사용하지 않는 객체(또는 쓰레기)를 식별하고,
회수하여, 메모리 누수를 방지하는데 사용된다.
Execution Context의 Phase
1. 생성단계(Creation Phase)
- 해당 execution context에서 사용할 코드, 변수, 함수들을 준비해 두는 단계
2. 실행단계(Execution Phase)
- 코드를 한줄한줄 실행하면서 이미 준비해둔 변수, 함수에 계산완료된 값들을 할당하는 단계