1 of 15

가비지 컬렉션

2 of 15

Garbage Collection

메모리 관리 방법 중 하나로,

프로그래머가 동적으로 할당한 메모리 영역 중

쓰이지 않는 영역을 자동으로 찾아 해제하는 기능

[나무위키]

3 of 15

Garbage Collection

메모리 누수와 원인을 알 수 없는 버그 등을 해결하기 위해 탄생

4 of 15

Memory Management

프로그래밍 언어와 관계없이 메모리 생존주기는 비슷함

[할당 > 사용 > 해제]

메모리 할당

메모리 사용

메모리 해제

5 of 15

Memory Management

모든 언어에서 명시적으로 사용되는 메모리 사용과 달리

[할당 & 해제]는 저수준 언어에서는 명시적으로,

고수준 언어에서는 암묵적으로 작동

메모리 할당

메모리 사용

메모리 해제

고수준 언어

저수준 언어

암묵적 사용

명시적 사용

6 of 15

메모리 할당

Memory Management in JS

고수준 언어인 JS의 메모리 생존주기 예시

메모리 사용

메모리 해제

7 of 15

Memory Management in JS

JS는 값을 선언할 때, 자동으로 값에 해당하는 메모리를 할당

예시) string 에 해당하는 메모리를 할당

메모리 사용

메모리 해제

메모리 할당

8 of 15

Memory Management in JS

변수의 값을 활용해 할당된 메모리를 사용

메모리 해제

메모리 할당

메모리 사용

9 of 15

Memory Management in JS

변수 gc에 새로운 값 {2023: Happy New Year}을 할당하면서 기존의 “Garbage Collection”은 더 이상 필요가 없어짐

메모리 할당

메모리 사용

메모리 해제

10 of 15

Memory Management in JS

JS 엔진의 Garbage Collection 작동

메모리 할당

메모리 사용

메모리 해제

11 of 15

Garbage Collection

Garbage Collection의 작동 조건은 도달 가능성(Reachability)

12 of 15

Garbage Collection

13 of 15

Garbage Collection

14 of 15

Garbage Collection

15 of 15

참고 자료

가비지 컬렉션 나무위키

자바스크립트의 메모리 관리 MDN