JAVA/ETC

Garbage Collector, GC

Ssemi-Column 2024. 3. 28. 01:47
728x90

JVM에서 동적으로 할당된 메모리를 관리하는 구성 요소. 더 이상 사용되지 않는 객체를 식별하여 제거하여 메모리 누수를 방지하고 프로그램 성능을 최적화 함.

 

작동 방식

 

1. 객체를 추적 및 식별하여 객체의 상태를 모니터링함.

2. 객체의 참조를 카운트하며 더 이상 참조되지 않는지를 결정하기 위해 분석함.

3. 더 이상 참조되지 않는 객체를 식별하여 메모리에서 제거 (주로 힙 메모리)

4. 위에서 제거를 하여 메모리를 회수하여 다시 사용할 수 있는 메모리로 반환.

 

---

 

1. 힙 메모리는 Young Generation, Old Generation 2개로 나뉜다.

2. Young은 또 Eden, Survivor0, Survivor1 3개로 나뉜다.

3. 모든 객체의 생성은 Eden에서만 생성된다.

4. Eden이 꽉찼을 때 Minor GC를 수행하여 참조를 하지 않는 객체를 삭제. 참조하는 객체는 Survivor0으로 이동

5. 4번을 반복하다. Survivor0이 꽉차면 Survivor1로 객체를 이동.

6. 4, 5 를 반복하다 Survivor1이 꽉차면 Old Generation 으로 이동.

7. 4, 5, 6을 반복하다 Old Generation이 꽉차면 Major GC가 일어남.

8. Major GC는 Minor GC보다 시간이 더 길고. GC가 일어날 때마다 GC를 수행할 Thread외에 동작하는 모든 Thread가 멈추는데, 이 때를 Stop The World 라고함.

728x90
반응형
LIST