본문 바로가기
Programming/JAVA

가비지 컬렉터(Garbage Collector) 동작 원리

by 추천캐릭터 2022. 11. 21.
728x90

● 가비지 컬렉터(Garbage Collector)

 - 메모리 관리를 위해 힙영역에서 더 이상 사용되지 않는 객체를 메모리에서 제거하는 것

 

동작 원리

  • JVM에서 GC의 스케줄링을 담당하여 Java 개발자에게 메모리 관리의 부담을 덜어준다.
  • GC는 background에서 데몬 쓰레드로 돌며 더 이상 사용되지 않는 객체들을 메모리에서 제거하여 효율적인 메모리 사용을 돕는다.
  • 객체는 힙 영역에 저장되고 스택 영역에 이를 가리키는 주소값이 저장되는데 참조되진 않는객체를 메모리에서 제거한다.

 

Garbage Collector 동작 원리

 

물리적 공간 (Heap 영역)

- Young Generation

  - Eden   

  • 새로 생성된 객체들이 위치
  • Minor GC 발생

 - Survivor 1, 2

  • Eden 영역에서 GC 실행 후 살아남은 객체들이 위치
  • Minor GC 발생

 - Old Generation

  • Suvivor 영역에서 여러번의 GC 후 살아남는 객체들이 위치
  • Major GC 또는 Full GC 발생

 

STW

 - STW(Stop The World)

  • GC가 처리하는 동안 Java의 프로세스가 모두 멈춰버리는 형상이다.
  • Old영역이 가득차면 Major GC 또는 Full GC가 동작하는데 이때 STW 상태가 되므로 이를 최소화 하는 것이 중요하다.

 

GC 처리방식

 - Serial GC

  • Mark-sweep-compact 알고리즘
  • 적은 메모리와 CPU 코어 갯수가 적을 때 적합하다.

 -  Paraller GC

  • Serial GC와 알고리즘은 같지만 GC를 처리하는 Thread가 여러개 이다.
  • 메모리와 코어가 충분할 때 적합하다.

 - Paraller Old GC

  • Paraller GC에서 Old GC 알고리즘을 개선한 버전이다.

https://wooody92.github.io/java/GC-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC/

 

GC 동작원리

GC 구조와 동작원리

wooody92.github.io

 

728x90

'Programming > JAVA' 카테고리의 다른 글

접근자 프로퍼티란?  (0) 2022.10.31
static 변수와 static 메소드  (0) 2022.10.30
프로세스와 스레드 (Process vs Thread)  (0) 2022.10.29
자바의 특징  (0) 2022.10.27
객체 지향 언어란? (Object Oriented Language)  (0) 2022.10.27

댓글