가비지 컬렉션(Garbage Collection)이란?

그냥 준현·2024년 5월 13일
0

Computer Science

목록 보기
1/16

🌿 가비지 컬렉션

garbage를 collection한다.
프로그램에서 얘기하는 garbage는 사용하지 않는 메모리를 얘기합니다.

가비지 컬렉션은 개발자의 실수로 인해 불필요하게 할당된 메모리를 수집하여 해제하는 작업을 얘기합니다.

C, C++ 언어에서는 메모리의 관리를 개발자가 직접 해줘야 했습니다.
개발자의 실수로 인해 메모리 누수가 발생할 가능성이 생기고, 이로 인해 프로그램이 사용하는 메모리가 누적되거나 심한 경우 얘기치 않게 프로그램이 종료되는 상황을 일으켰습니다.

가비지 컬렉션은 JAVA, Golang과 같은 언어에서 자동으로 메모리 관리를 해주는 프로세스입니다.
메모리 누수를 방지하고 더 이상 사용되지 않는 객체를 자동으로 제거하여 프로그램의 성능을 향상시키는 역할을 합니다.

컬렉터(Collector) vs 컬렉션(Collection)

비슷한 용어를 먼저 정리해봅시다.

  • 가비지 컬렉션은 메모리를 관리하는 프로세스를 얘기합니다.
  • 가비지 컬렉터는 가비지 컬렉션을 수행하는 프로그램이나 모듈을 얘기합니다.

"가비지 컬렉터"가 "가비지 컬렉션"을 수행하는 것입니다.

🛠️ 작동 원리

가비지 컬렉터는 주기적으로 실행되며, 다음과 같은 과정을 거쳐 메모리를 관리합니다.

  1. 객체 추적
    가비지 컬렉터는 프로그램이 생성한 모든 객체를 추적하고, 각 객체가 참조되고 있는지를 확인합니다.
  2. 도달 가능성 분석
    가비지 컬렉터는 각 객체가 다른 객체에 의해 참조되고 있는지를 분석하여 도달 가능한 객체들을 식별합니다.
    도달 가능한 객체는 프로그램의 실행 흐름에서 직접 또는 간접적으로 접근할 수 있는 객체를 의미합니다.
  3. 쓰레기 수집
    가비지 컬렉터는 도달 가능하지 않은 객체들을 식별하고 제거합니다.
    이러한 객체들은 더 이상 프로그램에 의해 사용되지 않으므로 자유 공간으로 반환됩니다.

😃 장점

메모리 누수 방지

가비지 컬렉터는 더 이상 사용되지 않는 객체들을 자동으로 제거하여 메모리 누수를 방지합니다.
이를 통해 개발자의 실수로 인해 제거되지 않은 객체들이 계속 누적되어 메모리 사용량이 증가하는 것을 방지할 수 있습니다.

자원 관리 간편화

C 언어에서는 메모리의 할당과 해제를 전부 개발자가 관리를 했습니다.
..

가비지 컬렉터는 개발자가 수동으로 메모리를 할당하고 해제하는 번거로움을 줄여줍니다.
이는 개발자가 더욱 집중하여 프로그램의 핵심 로직에 집중할 수 있도록 돕습니다.

성능 향상

가비지 컬렉터는 더 이상 필요하지 않은 객체들을 효율적으로 제거하여 메모리 사용량을 최적화하고, 메모리 단편화(Memory Fragmentation)을 방지하여 성능을 향상시킵니다.

😥 단점

일시적인 지연

가비지 컬렉터가 실행될 때 일시적으로 프로그램의 실행이 지연될 수 있습니다.
이는 가비지 컬렌션 프로세스가 실행되는 동안 프로그램의 실행이 일시 중단되기 때문에 발생합니다.

오버헤드

가비지 컬렉터는 추가적인 시스템 자원을 필요로 하며, 가비지 컬렉션 프로세스의 실행에 따른 오버헤드가 발생할 수 있습니다.

profile
잘해야 재밌어

0개의 댓글

관련 채용 정보