garbage를 collection한다.
프로그램에서 얘기하는 garbage는 사용하지 않는 메모리를 얘기합니다.
가비지 컬렉션은 개발자의 실수로 인해 불필요하게 할당된 메모리를 수집하여 해제하는 작업을 얘기합니다.
C, C++ 언어에서는 메모리의 관리를 개발자가 직접 해줘야 했습니다.
개발자의 실수로 인해 메모리 누수가 발생할 가능성이 생기고, 이로 인해 프로그램이 사용하는 메모리가 누적되거나 심한 경우 얘기치 않게 프로그램이 종료되는 상황을 일으켰습니다.
가비지 컬렉션은 JAVA, Golang과 같은 언어에서 자동으로 메모리 관리를 해주는 프로세스입니다.
메모리 누수를 방지하고 더 이상 사용되지 않는 객체를 자동으로 제거하여 프로그램의 성능을 향상시키는 역할을 합니다.
비슷한 용어를 먼저 정리해봅시다.
"가비지 컬렉터"가 "가비지 컬렉션"을 수행하는 것입니다.
가비지 컬렉터는 주기적으로 실행되며, 다음과 같은 과정을 거쳐 메모리를 관리합니다.
가비지 컬렉터는 더 이상 사용되지 않는 객체들을 자동으로 제거하여 메모리 누수를 방지합니다.
이를 통해 개발자의 실수로 인해 제거되지 않은 객체들이 계속 누적되어 메모리 사용량이 증가하는 것을 방지할 수 있습니다.
C 언어에서는 메모리의 할당과 해제를 전부 개발자가 관리를 했습니다.
..
가비지 컬렉터는 개발자가 수동으로 메모리를 할당하고 해제하는 번거로움을 줄여줍니다.
이는 개발자가 더욱 집중하여 프로그램의 핵심 로직에 집중할 수 있도록 돕습니다.
가비지 컬렉터는 더 이상 필요하지 않은 객체들을 효율적으로 제거하여 메모리 사용량을 최적화하고, 메모리 단편화(Memory Fragmentation)을 방지하여 성능을 향상시킵니다.
가비지 컬렉터가 실행될 때 일시적으로 프로그램의 실행이 지연될 수 있습니다.
이는 가비지 컬렌션 프로세스가 실행되는 동안 프로그램의 실행이 일시 중단되기 때문에 발생합니다.
가비지 컬렉터는 추가적인 시스템 자원을 필요로 하며, 가비지 컬렉션 프로세스의 실행에 따른 오버헤드가 발생할 수 있습니다.