[코드캠프 벨류업]JS V8 Engine

민범기·2022년 5월 2일
0

V8은 크롬 브라우저와 node.js 에서 사용되어 지고 있는 구글에서 만든 자바스크립트 엔진 이다.
보통 자바스크립트 엔진은 한줄읽고 해석하는 인터프리터 방식이지만 구글 V8은 바이트 코드를 컴파일 하고 실행하는 방식을 따른다.

V8의 Compiler
V8은 JIT Compiler을 지원한다.
일반적인 Compiler에는 동적 컴파일(인터프리터)와 정적 컴파일(Compiler)가 있다.

JIT Compiler는 이 두개를 합친 것으로 실행시점에서 인터프리터 방식으로 바이트 코드를 생성한다.
그 후 V8 Engine은 바이트 코드를 머신 코드로 만들고, 그 코드를 캐싱하여, 같은 함수가 여러 번 불릴 때 매번 머신 코드를 생성하는 것을 방지한다.

V8 Engine에서 바이트코드로 바꾸는 컴파일러를 Ignition 이라고 말한다.

Ignition는 바이트코드를 생성하고 TurboFan 이라는 컴파일러를 통해 최적화 컴파일하는 과정을 거친다.

이렇게 빠르고 효율적인 컴파일러이기 때문에 JIT(Just-In-Time)이라고 불리게 된다.

V8 기능 정의
자바스크립트 코드 컴파일 및 실행
콜스택을 핸들링해서 자바스크립트 함수를 특정 순서에 따라 실행
힙메모리 객체에 대한 메모리 할당 관리
더 이상 사용하지 않는 객체를 관리 (가비지컬렉터)
모든 데이터 타입, 연산자, 객체, 함수를 제공
이벤트 루프를 제공 (이벤트 루프를 사용하여, Callback 함수들의 변화 감지)

profile
프론트엔드 개발 지망생 민범기입니다^^

0개의 댓글