Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 메모리 관리의 핵심 변화: 가비지 컬렉터 종류와 특징 총정리

Java 9 메모리 관리의 핵심 변화

가비지 컬렉션(Garbage Collection, GC)은 자바(Java) 메모리 관리의 핵심 요소입니다. GC는 더 이상 사용되지 않는 객체를 메모리에서 제거하고, 그 공간을 회수하는 역할을 담당합니다. 이러한 정리 작업은 미리 정의된 가비지 컬렉터(Garbage Collector)들이 특정 알고리즘에 따라 수행합니다.

자바에서 사용되는 주요 가비지 컬렉터 유형은 아래와 같습니다.

1. Serial GC (시리얼 GC)

단일 스레드로 동작하는 컬렉터로, 데이터 사용량이 적은 소규모 애플리케이션에 적합합니다. 다음 명령줄 옵션으로 활성화할 수 있습니다: -XX:+UseSerialGC

2. Parallel GC (병렬 GC)

여러 스레드를 사용해 가비지 컬렉션을 동시에 처리하며, '처리량(throughput) 컬렉터'라고도 불립니다. 다음 옵션으로 활성화할 수 있습니다: -XX:+UseParallelGC

3. G1 Garbage First (G1 GC)

G1(Garbage First)은 Java 9부터 기본(default) 가비지 컬렉터로 지정된 것이 이번 버전의 가장 큰 변화입니다. 대용량 메모리 공간을 갖춘 멀티 프로세서 환경에서 실행되는 애플리케이션을 위해 설계되었으며, 활성화 옵션은 -XX:+UseG1GC입니다.

G1은 힙 영역을 여러 개의 리전(region)으로 나누어 관리하고, 예측 가능한 짧은 일시 중지 시간(pause time)을 목표로 한다는 점이 특징입니다.

4. Concurrent Mark Sweep (CMS)

애플리케이션의 일시 중지 시간을 최소화하도록 설계된 컬렉터입니다. 다음 옵션으로 사용할 수 있습니다: -XX:+UseConcMarkSweepGC. 단, Java 9부터 이 GC 방식은 폐기(deprecated)되었으므로 새로운 프로젝트에서는 사용을 권장하지 않습니다.

마무리

Java 9 메모리 관리에서 주목할 점은 두 가지입니다. 첫째, 기본 가비지 컬렉터가 G1 GC로 전환되었다는 것, 둘째, CMS가 폐기 예정 상태가 되었다는 것입니다. 애플리케이션의 규모와 실행 환경에 맞는 컬렉터를 선택하는 것이 JVM 성능 최적화의 핵심입니다.