Garbage-collection
변수를 선언하고 값을 대입하는 것은 내부적으로 메모리 주소에 해당 값이 기록 되는 것이다.
프로그래밍 언어중에서는 메모리를 직접 관리해야하는 언어(C
,C++
)와, 자체적으로 메모리 관리를 해주는 언어로 나뉜다.
garbage collection
이라는 개념은 사용하지 않는
javascript
는
memory safe laugaunge 개념으로 나뉜다.
가비지 콜렉팅이 비싼 작업이다.
자바스크립트는 도달 가능성(reachability)이라는 개념을 사용해 메모리 관리를 수행합니다.
‘도달 가능한(reachable)’ 값은 쉽게 말해 어떻게든 접근하거나 사용할 수 있는 값을 의미합니다. 도달 가능한 값은 메모리에서 삭제되지 않습니다.
아래 소개해 드릴값들은 그 태생부터 도달 가능하기 때문에, 명백한 이유 없이는 삭제되지 않습니다.
예시:
현재 함수의 지역 변수와 매개변수 중첩 함수의 체인에 있는 함수에서 사용되는 변수와 매개변수 전역 변수 기타 등등 이런 값은 루트(root) 라고 부릅니다.
루트가 참조하는 값이나 체이닝으로 루트에서 참조 할 수 있는 값은 도달 가능한 값이 됩니다.
전역 변수에 객체가 저장되어있다고 가정해 봅시다. 이 객체의 프로퍼티가 또 다른 객체를 참조하고 있다면, 프로퍼티가 참조하는 객체는 도달 가능한 값이 됩니다. 이 객체가 참조하는 다른 모든 것들도 도달 가능하다고 여겨집니다. 자세한 예시는 아래에서 살펴보겠습니다.
자바스크립트 엔진 내에선 가비지 컬렉터(garbage collector)가 끊임없이 동작합니다. 가비지 컬렉터는 모든 객체를 모니터링하고, 도달할 수 없는 객체는 삭제합니다.