Garbage Collection(GC)
- 메모리 관리 방법중 하나
- 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아
자동으로 다시 사용 가능한 자원으로 회수하는 것
➡️
- 가비지 컬렉터
- 가비지컬렉션을 수행하는 부분
Garbage Collector의 원리
- 메모리가 부족할 때 필요없는 부분을 정리해주는 프로그램
프로그램을 실행할 때 메로리를 관리하는 OS에 프로그램 실행에 필요한 메모리를 요청하면,
이 메모리를 어디에 저장할지 그 주소(offset주소)를 할당한다.
이 할당된 메모리들은 기존에 가리키고 있던 메모리를 새롭게 선언되거나 형변환이 되면서
다른 곳을 가리키게 되면서 주소를 잃어버리게 되고 다시 찾을 수 없게 되면서
정리되지 않은 메모리가 생겨버리게 되기 때문에
프로그램이 돌아가면 필연적으로 ‘가비지’가 발생하게 된다.
➡️
- 가비지 컬렉터(+목적)
- 가비지를 다른 용도로 사용할 수 있도록 메모리 해제를 시킨다.
- 자바에서의 가비지 컬렉터
- JVM은 메모리를 부여받고 프로그램을 실행하다가 메모리가 부족해지는 순간이 오면 추가적으로 메모리를 더 요청한다.
요청하는 바로 이때 가비지 컬렉터가 실행된다. - 가비지 컬렉션은 실행 중인 JVM 내부에서 일어난다.
- 클래스 인스턴스는 사용자 코드에 의해 명시적으로 생성되고 가비지 컬렉션에 의해 자동으로 파괴되게 된다.
- JVM은 메모리를 부여받고 프로그램을 실행하다가 메모리가 부족해지는 순간이 오면 추가적으로 메모리를 더 요청한다.
Garbage Collector의 역할
- 메모리 할당
- 사용중인 메모리 인식
- 사용하지 않는 메모리 인식
- JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리를
주기적으로 삭제하는 프로세스
Garbage Collector의 알고리즘
Mark And Sweep 알고리즘
순회를 통해
메모리가 어떤 객체를 참조하고 있는지 마킹하고
참조하고 있지 않은 메모리들을 제거 후 분산된 메모리를 Heap의 시작 주소로 모아 정리하는 알고리즘
(참고링크)
공부한 내용을 여러글과 책 읽은 내용을 바탕으로 정리하고 있습니다.
좋은 글로 저의 공부에 도움을 주시는 분들께 감사드립니다.