[TIL] 24. Java GC(Garbage Collection)

김지수·2024년 5월 24일

TIL

목록 보기
24/53

GC(Garbage Collection)

ava에서 GC는 JVM에 의해 자동으로 관리되며 개발자는 명시적으로 메모리를 해제할 필요가 없다. Java의 GC는 여러 가지 알고리즘과 튜닝 옵션을 제공하여 다양한 애플리케이션 요구 사항을 충족시킨다.

GC(Garbage Collection)의 동작 방식

Serial GC

  • 동작 방식 : 단일 쓰레드로 GC 작업을 수행한다.
  • 장점 : 구현이 간단하고 단일 쓰레드 애플리케이션에 적합하다.
  • 단점 : 멀티코어 시스템에서 성능이 낮다. GC가 실행될 때 애플리케이션이 멈추는(stop-the-world) 시간이 길어질 수 있다.

Parallel GC

  • 동작 방식: 여러 쓰레드를 사용하여 GC 작업을 병렬로 수행합니다.
  • 장점 : 멀티코어 시스템에서 성능이 향상됩니다.
  • 단점 : 여전히 stop-the-world 현상이 발생할 수 있습니다.

CMS (Concurrent Mark-Sweep) GC

  • 동작 방식: 애플리케이션 쓰레드와 병행하여 GC 작업을 수행합니다.
  • 장점 : stop-the-world 시간을 줄입니다.
  • 단점 : 메모리 파편화(fragmentation)가 발생할 수 있으며, 복잡도가 높습니다.

G1 (Garbage-First) GC

  • 동작 방식 : 힙을 여러 영역으로 나누어 병렬로 GC를 수행하며, 필요한 영역을 우선적으로 정리합니다.
  • 장점 : 예측 가능한 짧은 stop-the-world 시간을 제공합니다.
  • 단점 : 설정과 튜닝이 복잡할 수 있습니다.

결론

Java의 Garbage Collection은 메모리 관리의 복잡성을 줄여주며 다양한 GC 알고리즘과 옵션을 제공하여 다양한 애플리케이션 요구 사항을 충족시킬 수 있습니다. 효율적인 GC 튜닝을 통해 Java 애플리케이션의 성능을 최적화할 수 있으며 이를 위해 각 알고리즘의 특성과 동작 방식을 잘 이해하는 것이 중요합니다.


오늘의 회고

Garbage Collection 은 자동으로 메모리를 관리하지만 특정 애플리케이션의 요구 사항과 실행 환경에 맞게 GC를 튜닝하면 성능을 더 최적화 할 수 있다. 아직은 GC에 대해서 이정도만 이해하고 스프링을 더 배워서 GC 튜닝 방법 까지 공부해봐야겠다.

profile
서툴고 부족한 점이 많지만, 배우고 발전하며 성장하기 위해 노력하겠습니다.

0개의 댓글