Python çöp toplayıcı belgeleri [kapalı]


132

Python çöp toplama işleminin nasıl çalıştığını ayrıntılı olarak açıklayan belgeler arıyorum.

Hangi adımda ne yapılacağıyla ilgileniyorum. Bu 3 koleksiyonda hangi nesneler var? Her adımda ne tür nesneler silinir? Referans döngüleri bulmak için hangi algoritma kullanılır?

Arka plan: Kısa sürede tamamlanması gereken bazı aramalar yapıyorum. Çöp toplayıcı en eski nesli toplamaya başladığında, diğer durumlarda olduğundan "çok" daha yavaştır. Aramalar için tasarlandığından daha uzun sürdü. En eski nesli ne zaman toplayacağını ve ne kadar süreceğini nasıl tahmin edeceğime bakıyorum.

En eski nesli ne zaman get_count()ve ile toplayacağını tahmin etmek kolaydır get_threshold(). Bu da manipüle edilebilir set_threshold(). Ancak collect()zorla yapmanın veya planlanmış toplama için beklemenin daha iyi olduğuna karar vermenin ne kadar kolay olduğunu anlamıyorum .

Yanıtlar:


126

Python'un çöp toplamayı nasıl yaptığına dair kesin bir kaynak yoktur (kaynak kodun kendisinden başka), ancak bu 3 bağlantı size oldukça iyi bir fikir vermelidir.

Güncelleme

Kaynak aslında oldukça yardımcı. Bundan ne kadar çıkacağınız C'yi ne kadar iyi okuduğunuza bağlıdır, ancak yorumlar aslında çok yardımcı olur. Aşağı atla collect()fonksiyonu ve yorumlar (çok teknik açıdan olsa) iyi sürecini açıklar.


3
CPython artık Subversion kullanmıyor. Hg.python.org'da barındırılan Mercurial'a geçtiler. Bu sitedeki bir dosyanın mevcut sürümüne nasıl bağlanacağımı bulamadığım için bunun yerine resmi olmayan bir GitHub aynasına bağlantı vereceğim .
Marius Gedminas

1
Bunu boşverin , resmi sitedeki en son gcmodule.c'ye nasıl bağlanacağınızı anladım . Hala GitHub'ı daha okunaklı buluyorum.
Marius Gedminas

çok öğren. Thx
gus

1
İlk bağlantı Python çöp toplama ile ilgili hiçbir şeye işaret etmez. Lütfen bağlantıyı güncelleyin.
Manish Barnwal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.