ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코어자바스크립트] 데이터는 어떻게 저장될까? 변수 선언과 데이터 할당
    [TIL] 카테고리/JavaScript 2022. 6. 15. 11:06

    1-1 데이터 타입의 종류 



    1-2-1 메모리와 데이터

    • 1비트 : 메모리의 가장 작은 조각. 0 또는 1. 각 비트는 고유한 식별자로 위치를 확인 할 수 있다.
    • 1byte = 8비트 : 컴퓨터에서 사용하는 데이터의 기본 단위. 28 = 256개의 값을 표현 가능.
      바이트 단위의 식별자 ( = 메모리 주솟값, memory address)를 통해 서로 구분하고 연결할 수 있다. 

    • 왜 8비트씩 묶게 되었을까?
      1) 비트는 너무 작다! 비트 단위로 쪼개진 데이터를 검색해서 위치를 확인하는 것은 비효율적이다.
      2) 비트를 묶어줌으로 인해 메모리 검색 시간을 줄일 수 있고, 표현할 수 있는 데이터의 개수도 늘릴 수 있다.
      3) 그러나 너무 큰 단위로 묶게 되면, 불필요하게 남는 빈 공간 (= 낭비되는 비트)가 생겨나게 된다
      4) 그러니 적당한 크기로 묶은것이 1byte! 

    • 자바스크립트만의 특징 ? 
      데이터 타입별로 할당할 메모리 영역을 정해 둔 C/C++, 자바 등의 정적 언어와 대비해, 
      상대적으로 메모리 관리 압박에서 자유로웠던 자바스크립트는 메모리 공간을 조금 더 넉넉히 할당했다.
      예를 들면, 숫자형의 경우 정수형인지 부동소수형인지 구분 없이 64비트를 할당한다.

     

    1-2-2 식별자와 변수

    • 변수 (variable) : 변할 수 있는 데이터
    • 식별자(identifier) : 데이터를 식별하는데 사용하는 이름 (a.k.a. 변수명)

    1-3 변수 선언과 데이터 할당 (동작원리)

    • let a = 'abc' 라고 했을 때, 데이터가 할당되는 방식은
      1) 변수(변할 수 있는 데이터) 를 만든다. 메모리의 비어있는 공간을 확보한다. 여기서는 1003번(예시)이다.
      2) 변수의 식별자는 a 로 한다 (이제 a라는 이름으로 이 변수를 찾을 수 있다) // 여기까지가 변수 선언
      3) 데이터 영역의 빈 공간 (여기서는 @5004)에 문자열 'abc'를 저장한다.
      4) a 라는 식별자를 가진 데이터 영역을 검색해 찾는다. (@1003 찾기)
      5) a에 앞서 저장한 문자열의 주소(@5004)를 값으로 저장한다 (=대입한다).
    •  

     

    • 왜 값을 직접 변수의 주소에 저장하지 않고, 데이터를 별도 위치에 할당해 주소를 대입해주는 단계를 거치는가 ?
      데이터에 따라 필요한 메모리 용량이 가변적이기 때문이다.
      = 데이터 변환을 자유롭게 함과 동시에 메모리를 효율적으로 관리하기 위함.

    • 서로 같은 데이터를 가진 변수들은? 무조건 다 같은 주소를 저장하게 된다. 메모리 용량이 줄어드는 효과!
    • 변수의 값을 변경하는 경우 어떤 변환이든 무조건 새로 공간을 만들어 저장하고 그 주소를 변수공간에 연결한다.
    • 기존 데이터는 자신의 주소를 값으로 가지는 변수가 하나도 없게 되면 가비지 컬렉터의 수거대상이 된다.

     

Designed by Tistory.