type
status
date
slug
summary
tags
category
icon
password
정의
자바 가상 머신(JVM)에서 메모리 관리를 담당하는 시스템입니다.
힙 영역에서 사용하지 않는 객체들을 찾아서 자동으로 삭제합니다.
프로그래머는 메모리 할당과 해제에 신경 쓰지 않아도 됩니다.
다양한 알고리즘과 전략을 사용하여 JVM의 성능을 향상시킬 수 있습니다.
장단점
장점
- 메모리 관리를 자동화하여 프로그래머의 부담을 줄이고,
- 메모리 누수와 같은 심각한 오류를 방지하는 데 도움이 됩니다.
- 프로그램의 안정성과 신뢰성을 향상시키며, 개발자가 코드 작성에 집중할 수 있게 해줍니다.
단점
- CPU 시간을 소모하므로 성능에 영향을 줄 수 있습니다.
- 가비지 컬렉션이 발생하면 프로그램이 일시 중단될 수 있습니다.
- 실시간 시스템에서는 가비지 컬렉션을 사용하지 않을 수 있습니다.
원리
가비지 컬렉션은 크게 두 단계로 이루어집니다:
- Mark Phase Root set으로부터 Heap 영역의 모든 개체를 스캔하는 것
- Sweep Phase Root set에서 접근할 수 없는 객체를 Heap 영역에서 제거하는 것

Stop-The-World
가비지 컬렉션을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것
- STW 발생하면 gc 를 실행하는 쓰레드를 제외한 나머지 스레드는 모두 작업을 멈춥
- GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작함
- 메모리 누수를 방지하고 자원을 안전하게 환원할 수 있음
GC 종류
Serial GC:
- 클라이언트 스타일 애플리케이션에 추천됨
- 낮은 일시 중지 시간 요구 사항이 없음
- 단일 스레드에서 실행됨
- 작은 힙 크기와 CPU 수를 가진 시스템에 적합함
Parallel GC:
- 이 GC는 처리량이 중요할 때 사용됨.
- 여러 스레드를 사용하여 GC 작업을 병렬로 수행
- 대량의 데이터를 처리하는 서버 애플리케이션에 적합함
Concurrent Mark-Sweep (CMS) GC:
- 대기 시간이 중요할 때 사용됨.
- 애플리케이션의 실행을 최소한으로 중단하면서도 메모리를 효과적으로 관리함.
- CPU 리소스를 많이 사용하며, 메모리 단편화 문제가 발생할 수 있음
Garbage-First (G1) Garbage Collector:
- 대용량 힙을 가진 시스템에서 장기 일시 중지를 최소화하는 데 초점을 맞춤
- 힙을 여러 영역으로 나누고, 각 영역을 독립적으로 관리하여 메모리 단편화를 줄임
Z Garbage Collector (ZGC):
- 대용량 힙을 가진 시스템에서 장기 일시 중지를 최소화하는 데 초점을 맞춤.
- 동시성과 병렬성을 활용하여 일시 중지 시간을 줄임