이것저것 개발기록

자바 가비지 컬렉션(GC)의 원리와 메모리 관리 본문

IT 이야기

자바 가비지 컬렉션(GC)의 원리와 메모리 관리

Garam Kim 2025. 12. 27. 11:22

"C언어처럼 메모리를 직접 해제하지 않아도 되는 이유!"
자바의 자동 메모리 관리 시스템인 가비지 컬렉션(Garbage Collection)의 내부를 들여다봅니다.

1. 힙(Heap) 메모리 영역의 분할

GC는 효율적인 관리를 위해 힙 영역을 Young GenerationOld Generation으로 나눕니다. 대부분의 객체는 금방 생성되었다가 사라진다는 가설(Weak Generational Hypothesis) 때문이죠.

2. GC 동작의 핵심: Mark and Sweep

1. Mark: 사용 중인 객체(Reachable)를 찾아 표시합니다.
2. Sweep: 표시되지 않은 객체들을 메모리에서 제거합니다.
3. Compact: 파편화된 메모리 공간을 하나로 모읍니다 (필요 시).

💡 실무 노트

GC가 일어날 때 애플리케이션이 일시 정지되는 'Stop-the-world' 현상을 이해해야 합니다. 대규모 트래픽 환경에서는 이 정지 시간이 서비스 장애로 이어질 수도 있어요.

팁: 불필요하게 객체를 너무 많이 생성하는 습관을 줄이는 것만으로도 GC 성능 향상에 도움이 됩니다. String 연산이 많다면 StringBuilder를 쓰는 것처럼요!