참조되고 있지 않은 힙 영역의 데이터.
GC에 의해 제거된다.
reachable : 참조되고 있는 상태. 비쓰레기 상태.
unreachable : 참조되고 있지 않은 상태. 쓰레기 상태.
Young 영역(Minor GC) : 새롭게 생성한 객체가 있다. 대부분의 객체가 금방 쓰레기 상태가 되기 때문에 많은 객체가 Young 영역에 생성되었다가 제거된다.
Old 영역(Major GC) : Young 영역에서 비쓰레기 상태를 계속 유지해 살아남은 객체가 이 영역으로 복사된다. 대부분 Young 영역보다 크게 할당하며, 크기가 큰 만큼 Young 영역보다 GC의 제거처리는 적게 발생한다.
Perm 영역(Major GC)
JVM은 GC가 실행되는 동안 애플리케이션을 일시정지 시킨다.
GC가 실행되는 동안에는, GC를 실행하는 스레드를 제외한 모든 스레드들이 작업을 멈춘다.
GC가 스택 영역의 모든 참조변수들과 힙 영역의 데이터들(객체, 배열)을 스캔하면서 쓰레기 상태인지 검사한다. (Mark)
그리고 쓰레기상태인 객체들을 힙 영역에서 제거한다. (Sweep)
GC과정이 완료되면 일시정지 되었던 스레드들을 다시 실행시킨다.
대개의 경우 GC튜닝이란 Stop The World 시간을 줄이는 것을 말한다.
참조 : https://velog.io/@litien/%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0GC