본문 바로가기
Java

[Java] 가비지 컬렉션(GC)란?

by Rapil 2023. 8. 17.

자바 가비지 컬렉션(GC)은

사용하지 않는 객체를 자동으로 제거하고 메모리를 회수하는 프로세스를 말합니다.

이를 통해 개발자가 메모리 관리에 신경 쓰지 않아도 되어 효율적인 프로그래밍을 가능하게 합니다.

자바 가비지 컬렉션(GC)가 필요한 이유

자바는 개발자가 직접 메모리를 해제해줄 수 없는 언어입니다. 따라서 사용하지 않는 객체들이 계속해서 메모리를 점유하면, 불필요한 메모리 낭비가 발생할 수 있습니다. GC는 이러한 객체를 찾아내어 메모리를 해제하여 시스템 성능과 안정성을 향상시킵니다.

자바 가비지 컬렉션(GC)의 동작방식

가장 간단한 형태의 GC인 Minor GC와 Major GC로 구분됩니다. Minor GC는 Young 영역에서 실행되며, Eden 영역이 가득 찼을 때 발생합니다. 살아남은 객체는 Survivor 영역으로 이동됩니다. Major GC는 Old 영역에서 실행되며, Old 영역이 가득 찼거나 필요할 때 수행됩니다. 사용하지 않는 객체를 제거하고 메모리를 회수하는 과정을 포함합니다.


주요 용어 정리

  • Minor GC (Young GC): Young 영역에서 실행되는 가비지 컬렉션으로, Eden 영역이 가득 차거나 일부 객체가 살아남았을 때 발생합니다.
  • Major GC (Old GC, Full GC): Old 영역에서 실행되는 가비지 컬렉션으로, Old 영역이 가득 차거나 필요할 때 발생합니다.
  • Eden 영역: 객체가 최초로 생성되는 Young 영역 내의 영역입니다.
  • Survivor 영역: Young 영역 내에서 Eden 영역에서 살아남은 객체들이 이동하는 영역입니다.
  • Old 영역 (Tenured 영역): 오랫동안 살아남은 객체들이 모이는 영역으로, Major GC의 주요 대상입니다.
  • Stop-the-world: GC 작업 수행 시 모든 애플리케이션 스레드를 일시적으로 정지시키는 현상으로, GC 작업 동안 애플리케이션 실행이 멈추게 됩니다.

 


GC의 이해와 적절한 활용은 메모리 관리와 애플리케이션 성능 향상을 위해 중요합니다.

이를 통해 애플리케이션의 안정성과 효율성을 높여보세요!