Szukam dokumentów, które szczegółowo opisują, jak działa wyrzucanie elementów bezużytecznych w Pythonie.
Interesuje mnie, co jest zrobione w jakim kroku. Jakie obiekty 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 wyszukiwania, które muszą zakończyć się w krótkim czasie. Kiedy śmieciarz zaczyna zbierać najstarsze pokolenie, jest to „dużo” wolniejsze niż w innych przypadkach. Zajęło to więcej czasu niż jest przeznaczone do wyszukiwania. Szukam, jak przewidzieć, kiedy zbierze najstarsze pokolenie i jak długo to potrwa.
Łatwo jest przewidzieć, kiedy zbierze najstarsze pokolenie z get_count()
i get_threshold()
. Tym też można manipulować set_threshold()
. Ale nie widzę, jak łatwo zdecydować, czy lepiej zrobić collect()
na siłę, czy poczekać na zaplanowany odbiór.