Search

불멸 객체(Immortal objects)

대분류
언어
소분류
Python
유형
객체
CPython
최종 편집 일시
2024/10/27 15:32
생성 일시
2024/07/16 08:43
15 more properties

Immortal objects

주로 CPython 인터프리터와 관련된 개념으로, 가비지 컬렉터가 수집하지 않는 객체
Python의 내부 동작과 관련된 객체
참조 횟수(reference count)가 0이 되어도 파괴되지 않음.
이러한 객체는 메모리 누수를 방지하기 위해 특별히 관리됨.
일반적으로, Python에서 객체는 참조 횟수(reference counting) 메커니즘을 사용하여 메모리가 관리되는데, 객체의 참조 횟수가 0이 되면 가비지 컬렉터에 의해 수집되고 메모리가 해제된다.
그러나 특정 객체는 가비지 컬렉터에 의해 수집되지 않도록 특별히 관리되어야 할 필요가 있는데 해당 객체가 바로 Immortal objects이다.

예시

모듈 객체: Python 인터프리터의 수명 동안 지속적으로 사용되며, 프로그램의 실행이 끝날 때까지 메모리에 유지된다.
내장 함수 및 예외: len(), range(), KeyError 등과 같은 내장 함수 및 예외는 프로그램 전반에 걸쳐 자주 사용되며, 일반 객체처럼 수집되면 안 된다.
인터프리터의 내부 객체: 인터프리터의 내부 동작과 관련된 객체로, 가비지 컬렉터의 수집 대상이 되어서는 안 된다.

사용되는 곳

내부 동작과 관련된 특정 상황에서 사용
Python 인터프리터 초기화 및 종료
내장 모듈 및 객체
Python의 전역 인터프리터 잠금(GIL)
GIL은 CPython 인터프리터에서 동시성을 관리하기 위한 메커니즘입니다. GIL 자체와 관련된 객체들도 "immortal"로 간주
CPython의 내부 데이터 구조
CPython 구현의 일부인 내부 데이터 구조 (예: 인터프리터 상태, 메모리 할당기 등) 역시 가비지 컬렉터에 의해 수집되지 않도록 "immortal"로 취급
확장 모듈