← 질문 목록
#63깊이 0

순환 참조 객체도 회수할 수 있는 이유는?

언어 · 런타임기초메모리

HotSpot의 추적식 수집기는 참조 횟수가 아니라 GC 루트에서 도달 가능한지를 본다. 서로 가리켜도 루트에서 닿지 않으면 둘 다 회수 대상이다.

  1. GC 루트객체 그래프

    참조를 따라 생존 객체를 표시한다

  2. 수집기미도달 객체

    메모리를 회수한다

  3. 수집기생존 객체

    필요하면 이동하고 압축한다

GC 루트에는 실행 중인 스레드스택 참조와 정적 참조 등이 포함된다. 루트가 살아 있으면 그 경로의 객체도 살아 있다.

세대별 수집은 대다수 객체가 빨리 죽는다는 관찰을 이용한다. 새 객체를 자주 수집하고 오래 산 객체는 승격한다.

표시와 이동 과정에는 일시 정지가 생길 수 있다. 동시 수집기는 일부 단계를 애플리케이션과 겹쳐 정지 시간을 줄인다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

순환 참조 객체도 회수할 수 있는 이유는?