/ JAVASCRIPT

자바스크립트 가비지 컬렉션

JavaScript 관련 글입니다.




가비지 컬렉션


자바스크립트는 managed language입니다. c언어와 같은 로우레벨 언어들은 unmanaged language로 malloc()이나 free()와 같은 것을 통해서 메모리 라이프사이클을 관리해야 합니다. 그러나 자바스크립트는 하이레벨언어로, 가비지 컬렉터가 메모리관리를 자동으로 해줍니다.

가비지 컬렉터는 쓸모없는, 즉 더이상 사용하지 않는 메모리를 해제하는 역할을 합니다.

가비지 컬렉션 알고리즘


1) Mark-and-Sweep

먼저 루트정보를 수집하고 기억(Mark)한 후 루트가 참조하고 모든 객체를 방문하여 이들을 Mark합니다. 또 Mark된 모든 객체를 방문하여 그 객체들이 참조하는 객체들도 Mark합니다. 루트에서 시작해서 모든 객체를 방문할 때 까지 이 과정을 반복하고, 탐색이 종료되면 Mark되지 않는 객체들을 메모리에서 해제(sweep)합니다.

2) Reference-Counting

‘참조카운팅’이라고 하며 한 요소가 다른 요소에게 몇번 참조되는지를 세서 0이라면 가비지로 판단하는 방식



End.