컴퓨터 환경에서 가비지 컬렉션은 자동화된 메모리 관리의 한가지 형태이다. 가비지 컬렉터는 애플리케이션이 다시는 접근하지 않는 객체가 사용한 메모르 공간을 회수하려고 한다. 가비지 컬렉션은 John
McCarthy 가 1959년 Lisp 언어에서 수동적인 메모리 관리로 인한 문제를 해결하기 위해서 제안한 개념이다.
현재에는 기본적으로 Java, Dylan 과 같은 언어에서는 기본 명세로서 제공되는 기능이며, C++, C와 같이 수동적 메모리 할당으로 디자인되었지만 가비지 컬렉션 구현을 지원하는 언어들도 존재한다.
가비지 컬렉션의 주요 기술은 다음의 2가지로 구분할 수 있다.
1. 어떻게 앞으로 사용되지 않을 객체를 결정할 수 있는가?
2. 그 객체가 사용하는 객체의 저장공간을 어떤식으로 반환할 것인가?
2번째 경우에 대한 힌트를 학교 자료구조 교재인 Fundamentals of data structure in c 의 Linked List 파트에서 힌트를 얻을 수 있고, 1번째의 내용은 원칙적으로 완벽한 예측이 불가능하기 때문에 시스템에서 객체 참조를 저장하는 식으로 해서 참조가 없으면 다시는 쓰지 않는 다는 식으로 해서 처리하는 듯함. (C++ 참조 변수를 통한 객체 자동 소멸 관련 내용과 관련한 부분인 듯, 추측이긴 한데 이게 맞는거 같음;;; 아닐지도 ㅋㅋㅋ)