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