JAVA
가비지 컬렉션(Garbage Collection) 동작원리
diligentdev
2024. 2. 1. 20:34
728x90
가비지 컬렉터가 가비지 컬렉션을 수행
가비지 컬렉션
- 메모리 관리기법
- 힙내에 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 해제하는 기능
가비지 컬렉터 동작원리
- 포인터 추적 방식
- 1개 이상의 variable가 가리키는 직/간접적인 메모리는 사용하고 있는 메모리로 간주
- 그밖에 메모리는 해제
- Mark and Sweep
- 메모리 중 1비트를 남겨 메모리 사용 여부를 표시
- 모든 변수가 가리키는 메모리를 사용중이라 표시
- 재귀적으로 따라가며 모두 표시
- 마킹이 안된 영역은 메모리 해제
- 표시중 내용이 변경될 수 있다는 단점
- 삼색 표시 기법
- mark and sweep의 단점 보안
- 3가지 정보로 나눠서 표시
- 흰색, 회색, 검은색
- 흰색
- 더이상 접근 불가능 객체
- 회색
- 접근 가능한 객체
- 가리키는 객체들은 아직 검사되지 않음
- 검은색
- 가리키는 객체들이 흰색 객체를 가리키지 않았음
- 알고리즘 작동 방식
- 알고리즘 시작시, 변수가 가리키는 객체들이 회색, 그외에는 흰색
- 회색 중 하나를 선택해 검은색으로 표시, 이 객체가 가리키는 객체를 모두 회색으로 표시
- 회색객체가 하나도 남지 않을 때가지 수행
- 흰색 객체만 삭제
728x90