### Major GC (Full GC)

[[Young Generation]]영역에서 살아남은 객체가 이동된 [[Old Generation]]에서 발생하며, Full GC==로 불리기도 함

Old 영역에서 일어나는 GC로, 기본적으로 [[Mark-Sweep-Compact]] 알고리즘 사용
    
- ==Major GC는 작업이 진행되는 동안 어플리케이션 동작이 멈추기== 때문에, 실제 성능 및 안정성에 큰 영향을 미치게 됨

**Major GC**는 Old 영역이 가득 차면 GC를 실행하는 단순한 방식이다. 

Old 영역에 할당된 메모리가 허용치를 넘게 되면, Old 영역에 있는 모든 객체들을 검사하여 참조되지 않는 객체들을 한꺼번에 삭제하는 Major GC가 실행되게 된다.

하지만 Old Generation은 Young Generation에 비해 상대적으로 큰 공간을 가지고 있어, 이 공간에서 메모리 상의 ==객체 제거에 많은 시간이 걸리게 된다.==

예를들어 Young 영역은 일반적으로 Old 영역보다 크키가 작기 때문에 GC가 보통 0.5초에서 1초 사이에 끝난다.

그렇기 때문에 Minor GC는 애플리케이션에 크게 영향을 주지 않는다.

하지만 Old 영역의 Major GC는 일반적으로 Minor GC보다 시간이 오래걸리며, 10배 이상의 시간을 사용한다.

이 때 [[STW (Stop The World)]] 가 문제가 된다.
[[Major GC]]가 일어나면 Thread가 멈추고 Mark and Sweep 작업을 해야 해서 CPU에 부하를 주기 때문에 어플리케이션이 멈추거나 버벅이는 현상이 일어나기 때문이다.

따라서 자바 개발진들은 끊임 없이 **가비지 컬렉션 알고리즘을 발전** 시켜왔다.