← 질문 목록
#241깊이 0

파이썬의 가비지 컬렉션은 무엇으로 동작하는가?

언어 · 런타임기초메모리

CPython은 참조 횟수를 세는 것을 기본으로 하고, 서로 물고 도는 것을 걷어 내려고 세대별 수집기를 함께 쓴다. 기본적으로 참조 횟수가 0이 되면 즉시 메모리에서 제거한다.

메커니즘역할
참조 횟수기본 메커니즘. 0이 되면 즉시 해제
세대별 GC보조 메커니즘. 순환 참조 해결

참조 횟수 계산은 빠르고 즉각적이다. 하지만 두 객체가 서로를 가리키는 순환 참조가 발생하면 횟수가 0이 되지 않아 메모리 누수가 생긴다.

순환 참조는 세대별 GC가 주기적으로 찾아낸다. 객체를 세대로 나눠 오래 살아남은 것은 덜 자주 훑는다. 세대를 몇 개로 두는지는 판마다 바뀌어 왔다.

추천 꼬리질문

0/300

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

관련 질문

파이썬의 가비지 컬렉션은 무엇으로 동작하는가?