ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Javascript] 이벤트 루프
    카테고리 없음 2024. 5. 2. 10:25

    콜 스택, 메모리 힙이란?

    자바스크립트 엔진은 Memory Heap  Call Stack 으로 구성되어 있습니다. 가장 유명한 것이 구글의 V8 Engine입니다. 자바스크립트는 단일 스레드 (sigle thread) 프로그래밍 언어인데, 이 의미는 Call Stack이 하나 라는 이야기입니다. 즉 멀티가 되지 않고, 하나씩 하나씩 처리한다는 의미입니다.

     

    콜 스택(Call Stack)

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

    1) 변수 식별자(이름) 저장,
    2) 스코프 체인 및 this 관리,
    3) 코드 실행 순서 관리 등을 수행.
    *실행 컨텍스트의 상세 구조 및 원리는 이 글의 범위를 넘어가므로 다루지 않습니다.

     

    메모리 힙(Memory Heap)

    참조 타입(객체 등) 데이터가 저장된다.
    메모리 할당이 일어나는 곳.

     


     

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

    자바스크립트 메모리 구조 : 콜 스택, 메모리 힙

     

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

    - 10이라는 값 자체는 원시 타입이므로 콜 스택에 저장된다.
    - 변수 a에는 10이 저장된 콜 스택 메모리의 주소값이 저장된다.
    * 변수 식별자 a 자체는 콜스택 상의 '실행 컨텍스트(Execution Context)의 렉시컬 환경(Lexical Environment)'이라는 곳에 저장된다.

     

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

    - 배열, 객체, 함수 등은 참조 타입이므로 메모리 힙에 저장된다.
    - 참조타입 데이터가 저장된 메모리 힙의 주소값은 콜스택에 각각 저장된다.
    - 메모리힙의 주소 값이 저장된 콜 스택의 주소값은 각각 변수 b, c, d에 저장된다.
    * 마찬가지로, 변수 식별자 b, c, d 이름 자체는 콜스택 상의 '실행 컨텍스트(Execution Context)의 렉시컬 환경(Lexical Environment)'에 저장된다.

     

    - 이벤트 루프

    https://seokzin.tistory.com/entry/JavaScript-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84-Event-Loop?category=695590

     

    [JavaScript] 이벤트 루프 (Event Loop)

    JavaScript는 싱글 스레드 언어로써 한 번에 하나의 작업만 처리할 수 있습니다. 하지만 실제 웹을 보면 여러 작업들이 동시에 처리되는 것을 볼 수 있습니다. JavaScript는 어떻게 여러 작업을 처리할

    seokzin.tistory.com

     

Designed by Tistory.