메모리에 대해 자세히 알아보자 💾

Woogie·2022년 10월 17일
0

PGDC_JavaScript

목록 보기
2/5
post-thumbnail

일반적으로 메모리는 세가지의 과정을 거친다.

할당 -> 사용 -> 해제

  1. 변수를 선언하면 메모리 한 공간에 우리가 사용할 수 있도록 할당된다.
  2. 그 할당된 공간에 값을 넣어 사용할 수 있다.
  3. 사용을 한 후 메모리에서 해제하여 제거할 수 있다.
    자바스크립트 엔진에서는 사용하지 않는 메모리를 가비지 컬렉터라는 자동 메모리 관리 알고리즘을 통해 사용하지 않는 메모리 공간을 알아서 해제해준다.

아래의 코드로 좀 더 알아보자

1. let variable = 123
2. let variable2 = variable
3. variable = variable + 1

위 코드 설명

// 0x0004와 같은 주소는 설명을 위해 예시로 넣은 주소입니다.
1. variable 변수가 메모리 0x0004의 주소를 할당받으며 값(123)이 그 주소로 저장됨.
2. variable2 변수에 먼저 선언한 variable 변수를 대입함으로써 variable2variable의 메모리 주소 0x0004를 참조함.
3. 자바스크립트 원시 타입을 변경 할 땐 항상 새로운 메모리 주소를 할당 받는다. 따라서 새 메모리 주소 0x0008를 할당받고 값(124)이 저장됨.

Virtual Machine

자바스크립트 엔진은 가상머신으로 구성된다.
참조 타입이 들어가는 Heap과 원시 타입이 들어가는 Call Stack으로 나뉜다.

let a = 10
const b = 20
const arr = [];
arr.push(5);
arr.push(3);
arr.push(1);

위 코드 설명

  • 배열은 Object타입이므로 참조 타입으로 분류, 따라서 Heap에 배열영역 생성
  • Call Stack에 생성된 arr 변수는 Heap에 생성된 배열 영역 주소를 참조
  • Heap은 동적으로 크기가 달라지므로 const로 선언을 해도 값을 추가, 제거 등 할 수 있음

출처

프로그래머스 데브코스 교육 내용을 바탕으로 정리한 글 입니다.

프로그래머스 데브코스

profile
FrontEnd Developer

0개의 댓글