kakasoo

[javaScript] 가비지 컬렉션 본문

프로그래밍/JavaScript

[javaScript] 가비지 컬렉션

카카수(kakasoo) 2020. 8. 2. 11:36
반응형

C언어를 다룰 때 가장 힘든 것이 동적할당이었다.

동적할당을 처음 배울 당시, 나는 프로그래밍을 마치고 동적할당을 해제하지 않으면,

컴퓨터의 자원을 영영 잃어버리는 것이 아닐지, 그 부분에 대해서 두려움을 가졌다.

당연히 지금은 운영체제가 그런 부분을 자동적으로 처리해준다는 것을 알고 있다.

하지만 그 사실을 몰랐던 나는, 동적할당을 의사가 환자 다루듯 신중하게 해야 했다.

도달 가능성

Mark-and-Sweep 알고리즘이 있다.

이는 말하자면 DFS, BFS와 유사하게, 도달가능한 모든 영역을 탐색하는 알고리즘이다.

나중에 다른 포스팅에서 말하겠지만, JavaScript는 다양한 Enviorment를 Context로 가진다.

Mark-and-Sweep 알고리즘은 이 환경 중 맨 처음에 위치할 전역 환경에서부터 시작하여,

선언된 각각의 변수들까지 접근이 가능한지를 탐색한다.

만약 접근이 가능하다면 쓰이고 있거나, 추후 쓰일 예정이기 때문에 가만히 냅둔다.

다만, 접근이 불가능한 영역이 있다면, 삭제해도 무방한 것으로 간주하고 데이터를 지운다.

JavaScript는 이렇게 계속해서 삭제해도 좋은 값들을 찾아 지워나가는데,

이러한 개념을 가비지 컬렉션이라고 부른다.

반응형