일러두기
- 본 글은 모던 자바스크립트 Deep Dive 04장, ‘변수’ 절을 참고해 작성된 글입니다.
용어
- 메모리 memory : 메모리 셀의 집합체
- 메모리 셀 memory cell : 1byte (8bit)를 저장할 수 있는 메모리의 단위 공간
- 변수 variable : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름
- 할당(대입, 저장) assignment : 변수에 값을 저장하는 것
- 식별자 identifier: 어떤 값을 구별해서 식별할 수 있는 고유한 이름 예) 변수명, 함수명, 클래스명
- 변수 선언 variable declaration : 값을 저장하기 위한 메모리 공간을 확보 allocate 하고 변수 이름과 확보된 메모리 공간의 주소를 연결 name binding 해서 값을 저장할 수 있게 준비하는 것 선언 단계와 초기화 단계의 두 단계를 거쳐 일어난다.
- 쓰레기 값 garbage value : 메모리에 남아있는 이전에 다른 애플리케이션이 사용한 값. 자바스크립트에서는 변수 선언 단계에서
undefined
로의 초기화를 진행하므로 쓰레기 값으로부터 안전하다.
- 소스코드 평가 과정: 소스 코드 실행을 위한 준비 단계 변수 선언을 포함한 모든 선언은 이 단계에서 일어난다.
- 런타임 runtime : 소스코드를 한 줄 씩 실행하는 단계
- 변수 호이스팅 variable hoisting : 변수 선언문이 코드의 선두로 끌어올려진 것처럼 동작하는 자바스크립트 고유의 특징 변수 호이스팅은 변수 선언이
런타임
에 앞서 소스코드 평가 과정
에서 일어나기 때문에 발생한다.
- 가비지 콜렉터 garbage collector : 애플리케이션이 할당 allocation 한 메모리 공간을 주기적으로 감사하여 더 이상 사용되지 않는 메모리를 해제 release하는 기능 ‘더 이상 사용되지 않는’은, 더이상 어떤 식별자도 참조하지 않아서 다시는 그 메모리에 할당된 값을 찾아 쓰기 힘든 메모리를 말한다.
- 매니지드 언어 & 언매니지드 언어
- 매니지드 언어: 가비지 컬렉터처럼 언어 차원에서 메모리 관리를 해주는 언어
- 언매니지드 언어: 메모리를 직접 할당하고 해제하는 C언어에서의 malloc, free 같은 개발자 차원의 메모리 관리 기능이 있는 언어