상세 컨텐츠

본문 제목

Javascript 엔진

Programming

by 쌩우 2019. 8. 31. 14:46

본문

V8 엔진

자바스크립트 엔진 중 가장 유명한 것은 구글의 v8 엔진일 것이다.
v8 엔진은 크롬과 nodeJS에서 사용된다.
v8 엔진을 간략히 나타내면 아래와 같다.

  • Memory Heap : 메모리의 할당이 이뤄지는 곳
  • Call Stack : 코드가 실행되면서 stack이 쌓이는 곳

런타임

브라우저에는 개발자들이 사용하는 API가 있다. setTimeout 같은 것이 그 예이다.
하지만 이 API들이 엔진에 의해 제공되는 것은 아니다.

브라우저가 자체적으로 제공하는 웹 API의 개념으로 포함된다.
DOM, AJAX도 마찬가지이다.

콜스택

자바스크립트는 single-threaded 프로그래밍 언어다.
이것은 콜스택이 하나라는 것과 같은 의미이다.
한 번에 하나의 일만 할 수 있게 되는 것이다.

콜스택은 현재 프로그램 내부에서 어느 위치인지를 기록하는 자료 구조이다.
위치가 함수의 안으로 들어가는 순간, 해당 함수는 콜스택의 가장 위에 놓인다.
해당함수에서 다시 돌아오면 콜스택의 가장 윗 부분이 제거된다.

콜스택이 쌓이는 과정을 다음 예시를 통하여 알아보자.

function multiply(x, y) {
    return x * y;
}

function printSquare (x) {
    let s = multiply(x, x);
    console.log(s);
}

printSquare(5)

엔진에서 위의 코드를 읽기 시작할 때에는 콜스택이 비어있었을 것이다.
코드를 읽어나감과 동시에 콜스택이 쌓일 것이다.

각각의 콜스택은 Stack Frame (스택 프레임)이라고 부른다.

관련글 더보기

댓글 영역