런타임이란?

일반명사) 컴퓨터 프로그램 실행을 돕는 소프트웨어

고유명사) 특정 언어로 만든 프로그램들을 실행할 수 있는 환경(프로그램)

왜 사용하는가? 프로그래밍 언어로 작성된 프로그램을 실행하기 위해서

JavaScript 런타임

JavaScript 가 구동되는 환경

종류로는 브라우저(크롬, 파이어폭스, 익스플로러 등) 프로그램과 Node.js 라는 프로그램이 있음.

JavaScript 엔진의 구성 :

Memory Heap 과 CallStack 으로 구성되어 있음.

콜스택(CallStack)

실행 콘텍스트(Execution Context) 를 통해 원시 타입 데이터(정수, 실수, 문자, boolean 등) 가 저장된다.

함수의 호출부도 여기에 저장된다.

메모리 힙(Memory Heap)

참조 타입(객체 등) 데이터가 저장된다.

메모리 할당이 일어나는 곳.

콜 스택, 메모리 힙의 데이터 저장 구조

원시 타입 데이터 (파란색 변수 a)

  • 10 이라는 값 자체는 원시 타입이므로 콜 스택에 저장된다.
  • 변수 a 에는 10 이 저장된 콜스택 메모리의 주소값이 저장된다.

참고) 변수 식별자 a 자체는 콜스택 상의 ‘실행 컨텍스트(Execution Context) 의 렉시컬 환경(Lexical Environment)’ 이라는 곳에 저장된다.

 

참조 타입 데이터 (핑크색 변수 b, c, d)

  • 배열, 객체, 함수 등은 참조 타입이므로 메모리 힙에 저장된다.
  • 참조 타입 데이터가 저장된 메모리 힙의 주소 값은 콜스택에 각각 저장된다.
  • 메모리 힙의 주소 값이 저장된 콜스택의 주소값은 각각 변수 b, c, d 에 저장된다.

참고) 변수 식별자 b, c, d 이름 자체는 콜스택 상의 ‘실행 컨텍스트(Execution Context) 의 렉시컬 환경(Lexical Environment)’ 에 저장됨.

복사했습니다!