← 질문 목록
#75깊이 0

참조 횟수가 0이 아닌 객체도 왜 수거되는가?

언어 · 런타임기초메모리

CPython의 참조 카운팅만으로는 서로를 가리키는 순환 객체를 해제할 수 없다. 외부에서 닿지 않는 순환은 별도 순환 수집기가 찾아 수거한다.

기준참조 카운팅순환 수집
해제 조건참조 수 0외부에서 도달 불가
시점대체로 즉시수집 주기
강점예측 가능순환 처리

참조 횟수가 0이 되면 대부분 즉시 해제된다. 순환 수집기는 추적 대상 컨테이너를 세대별 정책으로 검사한다. 오래 살아남은 객체는 덜 자주 본다.

gc.disable()은 자동 순환 수집만 끈다. 참조 카운팅은 계속 동작한다. 수집 빈도를 낮추면 정지는 줄지만 순환 객체의 메모리 회수는 늦어진다.

추천 꼬리질문

0/300

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

관련 질문

참조 횟수가 0이 아닌 객체도 왜 수거되는가?