[JavaScript] 런타임 메모리 구조

2022. 11. 5. 18:22·프로그래밍 언어/JavaScript

런타임이란?

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

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

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

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)’ 에 저장됨.

'프로그래밍 언어 > JavaScript' 카테고리의 다른 글

[JavaScript] 실행 컨텍스트  (0) 2022.11.05
[JavaScript] 스코프(Scope)  (0) 2022.11.05
[JavaScript] 변수 선언 방식 (var/ let/ const)  (0) 2022.11.05
[JavaScript] Primitive Type(원시 타입) 과 Reference Type(참조 타입)  (0) 2022.11.05
[JavaScript] 자바스크립트 언어의 특징  (0) 2022.11.05
'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • [JavaScript] 실행 컨텍스트
  • [JavaScript] 스코프(Scope)
  • [JavaScript] 변수 선언 방식 (var/ let/ const)
  • [JavaScript] Primitive Type(원시 타입) 과 Reference Type(참조 타입)
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • k8s (1)
      • AWS (1)
      • 리눅스 (3)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    쿠버네티스
    FastAPI
    컨테이너
    Til
    typescript
    Kubernetes
    리눅스
    iterable
    nestjs
    mysql
    도커
    프로그래머스
    생활코딩
    자바스크립트
    django
    javascript
    typeorm
    Docker
    Python
    스택
    배열
    코딩테스트
    레벨2
    조인
    IP 주소
    Kubectl
    네트워크
    모듈
    기초
    redis
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
[JavaScript] 런타임 메모리 구조
상단으로

티스토리툴바