type
status
date
slug
summary
tags
category
icon
password

정의

💡
자바 가상 머신(JVM)에서 메모리 관리를 담당하는 시스템입니다. 힙 영역에서 사용하지 않는 객체들을 찾아서 자동으로 삭제합니다. 프로그래머는 메모리 할당과 해제에 신경 쓰지 않아도 됩니다. 다양한 알고리즘과 전략을 사용하여 JVM의 성능을 향상시킬 수 있습니다.

장단점

장점

  • 메모리 관리를 자동화하여 프로그래머의 부담을 줄이고,
  • 메모리 누수와 같은 심각한 오류를 방지하는 데 도움이 됩니다.
  • 프로그램의 안정성과 신뢰성을 향상시키며, 개발자가 코드 작성에 집중할 수 있게 해줍니다.

단점

  • CPU 시간을 소모하므로 성능에 영향을 줄 수 있습니다.
  • 가비지 컬렉션이 발생하면 프로그램이 일시 중단될 수 있습니다.
  • 실시간 시스템에서는 가비지 컬렉션을 사용하지 않을 수 있습니다.
 

원리

가비지 컬렉션은 크게 두 단계로 이루어집니다:
  1. Mark Phase Root set으로부터 Heap 영역의 모든 개체를 스캔하는 것
  1. Sweep Phase Root set에서 접근할 수 없는 객체를 Heap 영역에서 제거하는 것
notion image
 

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):

  • 대용량 힙을 가진 시스템에서 장기 일시 중지를 최소화하는 데 초점을 맞춤.
  • 동시성과 병렬성을 활용하여 일시 중지 시간을 줄임
 
프로세스 스케줄링Spring Bean
Loading...