GC는 상시 발생하는 작업이 아니라 전담 스레드에 의해 메모리가 부족하다고 판단될때 주기적으로 일어난다.

GC 과정

GC는 힙 메모리를 조사하는 프로세스로, 사용중인 것과 사용중이지 않은 객체를 식별한다. 그리고 사용중이지 않은 객체를 삭제하는 것이다.

Step 1. Marking

첫 단계는 마킹 단계다. 가비지 컬렉터는 사용중인 메모리가 사용중이지 않은 메모리를 식별한다. 아래 그림에서, 참조되고 있는 객체는 파란색으로 표시되어 있고, 참조 되지 않은 객체는 주황색으로 표시되어 있다.

Step 2. Normal Deletion

Normal Deletion 는 참조되지 않는 객체를 삭제하고, 참조중인 객체와 여유 공간에 대한 포인터는 남겨둔다.

Step 2a. Deletion with Compacting

메모리 공간을 인접하게 한쪽으로 밀어놓으면 그만큼 신규 메모리 할당을 위한 탐색시간이 짧아짐

왜 세대별(Generational) 가비지 컬렉션인가?