본문 바로가기

카테고리 없음

가비지 컬렉션 (GC : Garbage Collection)

반응형

가비지 컬렉션 (GC)과 장단점

 Garbage Collection(이하 GC)은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중 불필요해진 영역을 해제하는 기능으로, 여기서 불필요해진 영역은 어떤 변수도 가리키지 않게 된 영역을 의미합니다. GC의 장점으로는  유효하지 않은 포인터 접근, 이중 해제, 메모리 누수와 같은 버그를 줄이거나 막을 수 있고, 단점으로는 수집이 일어나는 타이밍이나 점유 시간을 예측하기 어려워서 실시간 시스템에 비적합 할당한 메모리가 해제되는 시점을 알 수 없습니다. 또한 GC는 사람과 같이 판단력을 갖춘 것이 아니기 때문에 지워야 할 내용들을 100% 잡아내지 못한다는 한계점을 가지고 있습니다.

 

GC 루트

 가비지 컬렉션(GC)은 초기에 모든 객체를 쓰레기라고 가정합니다. 이후 루트 목록을 순회하면서 어떤 힙과도 관계없는 루트를 쓰레기로 판단하여 정리합니다. 쓰레기 객체가 차지하던 메모리는 '비어 있는 공간'이 되고, 루트 목록에 대한 조사가 마무리되면 GC는 쓰레기가 차지하던 비어 있는 공간으로 인접한 객체를 이동시켜 정리합니다.

GC 루트

가비지 컬렉션(GC)을 사용하는 언어

 C언어과 C++은 GC를 직접 사용하지는 않지만, 라이브러리를 통해 사용할 수 있습니다. 함수형 프로그래밍 언어(ML, 하스켈, 얼랭 등)의 경우 GC를 지원하며, 그중 리스프는 GC를 최초로 사용한 언어입니다. 객체지향 언어(자바, 자바스크립트 등)들은 대부분 GC가 내장되어 있습니다.

반응형