문제
sys.getrefcount의 참조 수 불일치 문제
문제 설명
sys모듈의 getrefcount()가 python 3.12버전부터 Immortal 객체의 참조 횟수가 매우 커서 해당 객체에 대한 실제 참조 수와 일치하지 않는 오류
Immortal objects : 주로 CPython 인터프리터와 관련된 개념으로, 가비지 컬렉터가 수집하지 않는 객체
이는 주로 Python의 내부 동작과 관련된 객체로, 참조 횟수(reference count)가 0이 되어도 파괴되지 않는다. 이러한 객체는 메모리 누수를 방지하기 위해 특별히 관리된다.
일반적으로, Python에서 객체는 참조 횟수(reference counting) 메커니즘을 사용하여 메모리가 관리되는데, 객체의 참조 횟수가 0이 되면 가비지 컬렉터에 의해 수집되고 메모리가 해제됩니다. 그러나 특정 객체는 가비지 컬렉터에 의해 수집되지 않도록 특별히 관리되어야 할 필요가 있는데 해당 객체가 바로 Immortal objects이다.
해결 방법
•
버전을 3.12 미만 버전으로 다운그레이드한다.