4.3 가비지 컬렉션
가비지 컬렉션
가비지 컬렉션 = 도달 가능성(reachability) 개념으로 메모리 관리
1.루트값은 태생부터 도달 가능하여, GC대상은 아니다.
2.루트가 참조하는 값, 체이닝으로 도달할 수 있는 값, GC대상이 아니다.
외부로 나가는 참조는 도달가능성에 영향을 주지 않는다. ( 루트에서 참조해야 한다. )
루트로 부터 동떨어진 섬이 만들어지면, 섬 전체가 GC대상이다.
내부 알고리즘
GC기본 알고리즘 : Mark-and-sweep
- BFS처럼 순회하면서 마킹한다. 마킹 없으면 GC 대상
최적화 알고리즘
1.generational collection(세대별 수집)
- 상당수의 객체는 생성 후 금방 쓸모 없어진다.
- 이런점에서 새로운 객체는 더 감시하고, 그렇지 않은 경우면 덜 감시한다.
2.incremental collection(점진적 수집)
- 전체 객체를 마킹하는 작업은 시간이 오래 걸린다.
- CG를 여러 부분으로 나누어서 별도로 수행한다.
3.idle-time collection(유휴 시간 수집)
- CPU가 idle 상태일때만 GC 수행