가비지 컬렉션, GC(Garbage Collection)

Minor GC
- Eden 영역에 객체가 가득 차면 Minor GC가 발생한다.
- 새로 생성된 대부분의 객체(Instance)는 Eden 영역에 위치
- Eden 영역에서 GC가 한 번 발생한 후 살아남은 객체는 Survivor 영역 중 하나로 이동
- 이 과정을 반복하다가 계속해서 살아남아 있는 객체는 Old 영역으로 이동(Promotion)
- 객체의 생존 횟수를 카운트 하기 위해 Minor GC에서 객체가 살아남은 횟수를 의미하는 age를 Object Header에 기록한다.
- 그리고 Minor GC 때 기록된 age를 보고 Old 영역으로 이동(Promotion) 여부를 결정한다.
Major GC
- Old영역에 있는 모든 객체들을 검사하여 참조되지 않은 객체들을 한꺼번에 삭제한다.
- Major GC가 발생하면 GC를 실행하는 스레드를 제외한 나머지 스레드는 모두 작업을 멈춘다.
- 이것을
stop-the-world 라고 한다.
- GC 작업을 완료한 이후에 중단했던 작업을 다시 시작한다.
가비지 컬렉션(GC)는 어떤 원리로 소멸 시킬 대상을 선정하는가?
- Garbage Collector는 Heap 내의 객체 중에서 가비지(Garbage)를 찾아내고 찾아낸 가비지를 처리해서 Heap의 메모리를 회수한다.
- 참조되고 있지 않은 객체(Instance)를 가비지라고 한다.
- 객체가 가비지인지 판단하기 위해서 도달성, 도달능력(Reachability) 이라는 개념을 적용한다.