> 작성일 : 2022-03-30
- 새롭게 생성된 객체는 Eden 영역에 할당된다.
- Young Generation에서 발생하는 Garbage Collection을 Minor GC 라 한다.
- Young Generation에서 계속 사용되고 있다고 판단되는 객체가 Old Generation으로 이동된다.
- Old Generation에서 발생하는 Garbage Colleciton을 Major GC 또는 Full GC 라 한다.
Mark : 메모리의 사용여부를 식별해 사용(Reachable)과 미사용(Unreachable)로 구분
Sweep : 미사용(Unreachable)으로 구분된 메모리를 해제
Compact : Sweep 과정에 의한 메모리 단편화를 복원
Before
After
1) 객체가 생성면 Eden영역에 메모리 할당
2) Eden 영역이 꽉차게되면 Minor GC 실행
2-1) 미사용(Unreachable) 메모리는 해제(Sweep)
2-2) 사용(Reachable)되는 메모리는 Survivor Space(From)로 이동
(두개의 Survivor Space 중 1개는 반드시 UnUsed-미사용 상태)
3) '1)' ~ '2)' 과정이 계속 반복되다가 Survivor Space(From) 가 가득차면 사용되고 있는 메모리를 다른 Survivor Space(To)로 이동
4) 계속 사용될 경우 Old 영역으로 이동
1) Old Generation 영역이 꽉차게 되면 Major GC 실행
2) JVM이 어플리케이션의 실행을 멈추고 메모리를 수집
* 대부분의 성능개선은 Major GC 로 인한 Stop The World 를 줄이기 위함.
Tags : Garbage Collection, JVM튜닝, 가비지콜렉션, 자바 성능개선