파이썬 가비지 컬렉터 문서 [닫기]


132

파이썬 가비지 수집이 어떻게 작동하는지 자세히 설명하는 문서를 찾고 있습니다.

어느 단계에서 수행되는 작업에 관심이 있습니다. 이 3 개의 컬렉션에는 어떤 개체가 있습니까? 각 단계에서 어떤 종류의 개체가 삭제됩니까? 참조 사이클 찾기에 어떤 알고리즘이 사용됩니까?

배경 : 짧은 시간 안에 완료해야하는 일부 검색을 구현하고 있습니다. 가비지 수집기가 가장 오래된 세대를 수집하기 시작하면 다른 경우보다 "훨씬"느립니다. 검색보다 시간이 더 걸렸습니다. 나는 그것이 가장 오래된 세대를 모을 때와 얼마나 오래 걸릴지를 예측하는 방법을 찾고 있습니다.

함께 오래된 세대를 수집 할 때 예측하기가 용이 get_count()하고 get_threshold(). 또한로 조작 할 수 있습니다 set_threshold(). 그러나 나는 collect()강제 로 결정 하거나 예약 수집을 기다리는 것이 얼마나 쉬운 지 알지 못합니다 .

답변:


126

파이썬이 가비지 수집 (소스 코드 자체 제외)을 수행하는 방법에 대한 결정적인 리소스는 없지만이 3 개의 링크는 꽤 좋은 아이디어를 제공해야합니다.

최신 정보

소스는 실제로 매우 유용합니다. C에서 얼마나 잘 읽는지에 달려 있지만 의견은 실제로 매우 유용합니다. collect()기능으로 건너 뛰고 의견은 프로세스를 잘 설명합니다 (매우 기술적 인 용어 임에도 불구하고).


3
CPython은 더 이상 Subversion을 사용하지 않습니다. 그들은 hg.python.org에서 호스팅되는 Mercurial로 전환했습니다. 해당 사이트에있는 파일의 현재 버전에 연결하는 방법을 알 수 없으므로 비공식 GitHub 미러에 연결 합니다.
Marius Gedminas

1
공식 사이트 에서 최신 gcmodule.c 에 연결하는 방법을 알아 두십시오 . 여전히 GitHub가 더 읽기 쉽습니다.
Marius Gedminas

많이 배워라. Thx
gus

1
첫 번째 링크는 Python 가비지 수집과 관련된 내용을 가리 키지 않습니다. 링크를 업데이트하십시오.
Manish Barnwal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.