JS엔진은 코드부, 힙공간, 스택공간의 3가지 메모리주소 공간을 갖습니다. 이를 하나로 묶어 프로그램의 주소 공간이라 일컫죠.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/312874d3-f878-48be-bf07-b840d75ea026/Untitled.png

하나씩 알아봅시다.

Code Area

Call STACK

Heap

가비지 컬렉션

프로그래밍 언어와 상관없이 메모리 생성 주기는 다음과 같습니다.

  1. 필요 메모리 할당
  2. 메모리를 사용함
  3. 필요없어진 메모리를 비워줌

가비지 컬렉션은 3번, 변수의 필요 유무를 판단하고 메모리에서 제거해줍니다. 즉, 자동 메모리 관리자 정도로? 해석할 수 있죠. 가비지 컬렉션은 Mark Sweep 알고리즘을 가장 흔히 차용햐여 이루어집니다. 사실 저도 잘 몰라서... 찾아보시면 가비지 컬렉션의 동작원리를 알 수 있을 것 같습니다.

자바스크립트는 싱글스레드?