Szukam dokumentów, które szczegółowo opisują, jak działa python garbage collection.
Interesuje mnie, co zostało zrobione na jakim etapie. Jakie przedmioty znajdują się w tych 3 kolekcjach? Jakie rodzaje obiektów są usuwane na każdym etapie? Jaki algorytm jest używany do znajdowania cykli referencyjnych?
Tło: wdrażam pewne wyszukiwania, które muszą zakończyć się w krótkim czasie. Kiedy garbage collector zaczyna zbierać najstarszą generację, jest "znacznie" wolniejszy niż w innych przypadkach. Zajęło to więcej czasu niż jest przeznaczone na wyszukiwanie. Szukam, jak przewidzieć, kiedy zbierze najstarsze pokolenie i jak długo to zajmie.
Łatwo przewidzieć, kiedy zbierze najstarszą generację za pomocą get_count()
i get_threshold()
. Można to również manipulować za pomocą set_threshold()
. Ale nie rozumiem, jak łatwo zdecydować, czy lepiej użyć metody collect()
na siłę, czy poczekać na zaplanowane pobranie.