Документація збору сміття Python [закрита]


132

Я шукаю документи, які детально описують, як працює збір сміття пітон.

Мене цікавить, що робиться на якому кроці. Які об’єкти є у цих 3 колекціях? Які види об’єктів видаляються на кожному кроці? Який алгоритм використовується для пошуку еталонних циклів?

Передумови: я здійснюю деякі пошуки, які доведеться закінчити за невелику кількість часу. Коли сміттєзбірник починає збирати найстаріше покоління, це "набагато" повільніше, ніж в інших випадках. На пошуки пішло більше часу, ніж призначено. Я дивлюсь, як спрогнозувати, коли воно збиратиме найстаріше покоління і скільки часу це займе.

Неважко передбачити, коли воно збиратиме найстарше покоління з get_count()та get_threshold(). Цим також можна маніпулювати set_threshold(). Але я не бачу, як легко визначитися, чи краще це зробити collect()силою або чекати запланованого збору.

Відповіді:


126

Немає остаточного ресурсу щодо того, як Python здійснює збирання сміття (крім самого вихідного коду), але ці 3 посилання мають дати вам досить гарну ідею.

Оновлення

Джерело насправді дуже корисне. Скільки ви отримуєте з цього, залежить від того, наскільки добре ви читаєте С, але коментарі насправді дуже корисні. Переходьте до collect()функції, а коментарі добре пояснюють процес (хоча і в дуже технічному плані).


3
CPython більше не використовує Subversion. Вони перейшли на Mercurial, розміщений на hg.python.org. Оскільки я не можу зрозуміти, як зв’язати поточну версію файлу на цьому веб-сайті, натомість я покладу на неофіційне дзеркало GitHub .
Маріус Гедмінас

1
Незважаючи на це, з’ясували, як пов’язати останні новини gcmodule.c на офіційному сайті. Я все ще вважаю GitHub більш читабельним.
Маріус Гедмінас

багато навчитися. Thx
gus

1
Перше посилання не вказує ні на що, пов’язане зі збиранням сміття Python. Оновіть посилання.
Manish Barnwal
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.