เอกสารรวบรวมขยะ Python [ปิด]


132

ฉันกำลังมองหาเอกสารที่อธิบายรายละเอียดว่าการเก็บขยะ python ทำงานอย่างไร

ฉันสนใจว่าจะทำในขั้นตอนไหน มีวัตถุอะไรบ้างใน 3 คอลเลกชั่นนี้? ประเภทของวัตถุที่ถูกลบในแต่ละขั้นตอน? อัลกอริทึมใดที่ใช้ในการค้นหาวงจรอ้างอิง

ความเป็นมา: ฉันกำลังดำเนินการค้นหาบางอย่างที่ต้องใช้เวลาเพียงเล็กน้อย เมื่อคนเก็บขยะเริ่มเก็บคนรุ่นเก่าที่สุดจะช้ากว่าในกรณีอื่น ๆ "มาก" ใช้เวลามากกว่าที่ตั้งใจไว้สำหรับการค้นหา ฉันกำลังหาวิธีทำนายว่าจะรวบรวมคนรุ่นเก่าที่สุดเมื่อใดและจะใช้เวลานานแค่ไหน

มันเป็นเรื่องง่ายที่จะคาดการณ์เมื่อมันจะเก็บรุ่นที่เก่าแก่ที่สุดและget_count() ที่ยังสามารถจัดการกับget_threshold() set_threshold()แต่ฉันไม่เห็นว่าจะง่ายแค่ไหนที่จะตัดสินใจcollect()โดยการบังคับหรือรอการรวบรวมตามกำหนดการ

คำตอบ:


126

ไม่มีแหล่งข้อมูลที่ชัดเจนเกี่ยวกับวิธีที่ Python รวบรวมขยะ (นอกเหนือจากซอร์สโค้ดเอง) แต่ลิงก์ทั้ง 3 นี้ควรให้ความคิดที่ดีแก่คุณ

อัปเดต

แหล่งที่มามีประโยชน์จริง ๆ คุณจะได้รับประโยชน์มากน้อยเพียงใดขึ้นอยู่กับว่าคุณอ่าน C ได้ดีเพียงใด แต่ความคิดเห็นนั้นมีประโยชน์มาก ข้ามลงไปที่collect()ฟังก์ชั่นและความคิดเห็นอธิบายกระบวนการได้ดี (แม้ว่าจะเป็นในแง่เทคนิค)


3
CPython ไม่ใช้ Subversion อีกต่อไป พวกเขาเปลี่ยนไปใช้ Mercurial โฮสต์ที่ hg.python.org เนื่องจากฉันไม่สามารถหาวิธีเชื่อมโยงกับไฟล์เวอร์ชันปัจจุบันในไซต์นั้นได้ฉันจะลิงก์ไปยังมิเรอร์ 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.