← 질문 목록
#42깊이 0

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

언어 · 런타임기초메모리

답변 연습

내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요

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

  1. GC 루트→객체 그래프

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

  2. 수집기→미도달 객체

    메모리를 회수한다

  3. 수집기→생존 객체

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

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

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

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

추천 꼬리질문

0/300

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

관련 질문

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