
가비지 컬렉터(Garbage Collector, GC)는 메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당한 메모리 영역 중 더 이상 참조되지 않고 방치된 메모리를 자동으로 찾아내어 해제하는 시스템이다.
개발자가 메모리 해제를 직접 코드로 작성하지 않아도 가비지 컬렉터가 백그라운드에서 주기적으로 감시하며 유효하지 않은 메모리(쓰레기)를 수거해 간다. 이를 통해 메모리 누수(Memory Leak)를 방지하고 개발자가 비즈니스 로직에만 집중할 수 있도록 돕는다.
개발자가 방을 빌려 쓰고 나갈 때, 직접 가구를 치우고 청소를 해야 하는 방식이다. C나 C++ 언어가 이에 해당한다. 코드로 메모리를 할당한 후, 사용이 끝나면 반드시 해제 명령어를 직접 입력해야 한다. 만약 개발자가 해제 명령어를 깜빡하고 누락하면, 프로그램이 종료될 때까지 메모리가 그대로 낭비되어 시스템이 멈추는 메모리 누수 현상이 발생한다. 반대로 이미 해제한 메모리를 실수로 또 해제하면 프로그램이 비정상 종료되는 치명적인 오류가 생긴다.
방을 빌려 쓰고 그냥 몸만 나가도 호텔 청소부 시스템이 알아서 빈 방을 정리해 주는 방식이다. 자바(Java), 파이썬(Python), 자바스크립트(JavaScript) 등이 이에 해당한다. 개발자는 메모리 해제에 신경 쓰지 않고 변수와 객체를 자유롭게 생성하여 사용한다. 해당 객체를 가리키는 변수가 더 이상 존재하지 않으면, 가비지 컬렉터가 이를 감지하여 알아서 메모리를 수거해 간다.
두 방식의 차이는 메모리 관리 주체와 안전성에 있다. 전자는 개발자가 수동으로 관리하므로 세밀한 제어가 가능하지만 휴먼 에러의 위험이 크다. 후자는 시스템이 자동으로 관리하므로 메모리 누수 위험이 현저히 줄어들고 개발 생산성이 높아지지만, 가비지 컬렉터가 작동하는 동안 프로그램이 순간적으로 멈추는 오버헤드가 발생할 수 있다.