Garbage Collection 왜 생겼는가?

Java 는 개발자가 프로그램 코드로 메모리를 명시적으로 해제하지 않기 때문에 GC가 더 이상 필요 없는 쓰레기 객체를 찾아 지우는 작업을 한다. GC는 다음의 두 가지 전제 조건으로 만들어졌다.


GC의 절차

GC는 힙 메모리를 살펴보고 사용 중인 개체와 사용되지 않는 개체를 식별하고 사용되지 않는 개체를 삭제하는 프로세스이다.

사용중 또는 참조된 개체는 프로그램의 일부가 여전히 해당 개체에 대한 포인터를 유지하고 있음을 의미한다.

Mark

사용 중인 메모리 조각과, 사용하지 않는 메모리 조각을 식별

스크린샷 2023-10-15 오후 6.48.57.jpg

Normal Deletion

일반 삭제(Normal Deletion)는 참조되지 않은 개체를 제거하고 참조된 개체와 포인터를 여유 공간에 남겨 둔다.

메모리 할당자는 새 개체를 할당할 수 있는 여유 공간 블록에 대한 참조를 보유 한다.

스크린샷 2023-10-15 오후 6.57.30.jpg