Garbage Collector(GC)는 프로그래밍 언어에서 더 이상 사용되지 않는 메모리를 자동으로 해제해주는 기능입니다.
개발자가 직접 메모리를 관리하지 않아도 불필요한 객체를 식별하고 메모리를 회수하여 메모리 누수를 방지합니다.
Java에서는 JVM(Java Virtual Machine)이 힙 메모리 관리를 위해 GC를 실행합니다.
힙 메모리 구조
GC의 동작 과정
객체의 생존 주기
Serial GC
Parallel GC
CMS (Concurrent Mark-Sweep) GC
G1 (Garbage First) GC
자동 메모리 관리
Stop-The-World (STW)
Generational GC
GC 튜닝은 메모리 할당과 회수의 효율성을 높이고, 애플리케이션 성능을 최적화하는 데 중요합니다
JVM 옵션으로 GC 종류 설정
-XX:+UseG1GC
-XX:+UseParallelGC
-XX:+UseSerialGC
힙 메모리 크기 조정
-Xms512m -Xmx1024m
GC 로그 활성화
-XX:+PrintGCDetails -XX:+PrintGCDateStamps
Full GC 최소화
public class GarbageCollectorExample {
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
String data = new String("Garbage Collection Example " + i);
}
System.gc(); // Garbage Collection 요청
}
}
java -XX:+PrintGCDetails -XX:+PrintGCDateStamps GarbageCollectorExample
Garbage Collector는 Java의 메모리 관리를 자동화해주는 강력한 도구입니다.
GC의 원리를 이해하고 프로젝트 특성에 맞는 GC를 선택하여 성능을 최적화하는 경험이 중요하다고 느꼈습니다.
G1 GC와 같은 최신 GC는 대규모 애플리케이션에서도 효율적인 메모리 관리를 하는 것을 알게 되었습니다.
GC 튜닝을 통해 Stop-The-World 시간을 줄이는 기술적인 접근의 필요성을 실감했습니다.