자바스크립트 가비지 컬렉션
JavaScript 관련 글입니다.
- JS Event Loop, 자바스크립트 동작 원리
- 호이스팅이란 , var, let, const 차이
- Three.js에 대해
- script, script async, script defer의 차이
- AJAX가 무엇일까?
- 함수선언식과 함수표현식
- null과 undefined의 차이 간단정리
- setTimeout과 setInterval 요약
- this의 여러가지 의미
- Spread Operator(...)?
- JS class Constructor
- ES6 Destructuring Syntax
- default 파라미터 알아보기
- import / export 를 사용한 모듈식 개발방법
- Optional Chaining (?.)
- 프로미스(Promise)에 대해서
- ES8 - async / await
- Symbol 자료형?
- forEach, for in, for of 알아보기
- JSON형식 변환 방법 - JSON.parse(), JSON.stringify()
- 자바스크립트 가비지 컬렉션
- 화살표 함수와 일반함수의 차이
- JavaScript Array.reduce() 간단히 알아보기
가비지 컬렉션
자바스크립트는 managed language입니다. c언어와 같은 로우레벨 언어들은 unmanaged language로 malloc()이나 free()와 같은 것을 통해서 메모리 라이프사이클을 관리해야 합니다.
그러나 자바스크립트는 하이레벨언어로, 가비지 컬렉터가 메모리관리를 자동으로 해줍니다.
가비지 컬렉터는 쓸모없는, 즉 더이상 사용하지 않는 메모리를 해제하는 역할을 합니다.
가비지 컬렉션 알고리즘
1) Mark-and-Sweep
먼저 루트정보를 수집하고 기억(Mark)한 후 루트가 참조하고 모든 객체를 방문하여 이들을 Mark합니다. 또 Mark된 모든 객체를 방문하여 그 객체들이 참조하는 객체들도 Mark합니다. 루트에서 시작해서 모든 객체를 방문할 때 까지 이 과정을 반복하고, 탐색이 종료되면 Mark되지 않는 객체들을 메모리에서 해제(sweep)합니다.
2) Reference-Counting
‘참조카운팅’이라고 하며 한 요소가 다른 요소에게 몇번 참조되는지를 세서 0이라면 가비지로 판단하는 방식
End.