Learn JS V8 engine

Junghan Lee·2023년 3월 26일
0

Learnd in Camp

목록 보기
18/48

Index

Intro : JavaScript V8 engine?
JIT compiler
Components
Runtime System
상호 운용성
Outro

What is JS V8 engine?

v8엔진은 구글에서 개발한 오픈 소스 자바스크립트 엔진으로 C++로 작성되어 주로 구글 크롬, node.js에서 사용된다. V8은 자바스크립트 코드를 컴파일하고 실행하는 역할을 한다.

JIT compiler

V8 engine은 Just-In-Time 컴파일러(JIT)를 사용해 자바스크립트를 컴파일하는데, 코드 실행 도중에 컴파일을 수행하므로 실행 시간을 줄이고 최적화된 기계어 코드를 생성한다. 이로써 V8 엔진은 높은 성능을 제공하며 대용량 데이터 처리 및 실시간 응용 프로그램 개발에 적합하다.

V8 엔진은 효율적인 메모리 관리, 가비지 컬렉션을 제공해 메모리 누수 및 성능 저하를 방지한다. 또 V8 엔진은 다양한 플랫폼에서 동작하는 크로스 플랫폼 엔진으로 개발자가 자바스크립트 코드를 쉽게 작성하고 디버깅 할 수 있도록 돕는다.

컴포넌트 구성

V8엔진은 자바스크립트 코드를 처리하기 위해 여러 컴포넌트로 구성되어 있는데, 이는 대표적으로

  • Parser : 자바스크립트 코드를 파싱해 Abstract Syntax Tree 를 생성
  • compiler : Abstract Syntax Tree를 최적화된 Bytecode로 컴파일
  • Ignition : ByteCode 실행
  • Turbofan : Bytecode를 최적화된 기계어 코드로 컴파일

등이 있고, 각각의 컴포넌트는 다양한 역할을 수행한다

Runtime system

런타임 시스템은 자바스크립트 코드가 실행될 때 생성되는 객체, 함수 등의 자바스크립트 런타임 환경을 제공하며 크게

  • 메모리 관리 : V8엔진이 자바스크립트 객체를 생성하고 관리하는 방법 정의
  • 가비지 컬렉션 : 메모리를 사용할 때, 객체를 생성하고 소멸시키는 데 사용, 사용하지 않는 객체를 자동 삭제해 메모리 해제하며 메모리 누수 방지
  • 스레딩 : 멀티 스레딩을 지원, 비동기 코드 실행을 위해 node.js와 같은 환경에서 스레드 풀을 사용하며 이를 통해 동시에 여러 요청을 처리
  • 프로파일링 : 코드 실행 시간, 메모리 사용량 등을 측정하고 분석해 최적화 작업 수행

등의 기능을 제공한다. 또 V8엔진의 Runtime System은 크게

  • JavaScript Engine : 엔진에 내장된 JS 런타임 엔진, 자바스크립트 코드를 실행
  • WebAPIs : 브라우저에서 제공되는 DOM, XMLHttpRequest등의 API로 브라우저의 기능 제어
  • Event Loop : 비동기 작업을 처리하는 방식을 제공

등으로 구성된다. 이러한 Runtime System의 기능들이 모여 V8엔진은 고성능, 안정성을 제공해 대용량 데이터 처리 및 실시간 응용 프로그램 개발에 적합하게 된다.

상호 운용성

V8엔진은 C++로 작성되어 자바스크립트와 C++간의 상호 운용성을 제공하며 C++라이브러리를 사용해 자바스크립트 코드를 작성하고 호출할 수 있다.

마무리

V8엔진은 자바스크립트 엔진의 중요한 역할을 수행하며 현재까지 개발된 가장 빠르고 효율적인 엔진 중 하나이다.

profile
Strive for greatness

0개의 댓글