gc --- ควบคุม garbage collector

โมดูลนี้ให้อินเตอร์เฟสสำหรับ heap garbage collector: การเปิดหรือปิดใช้งาน automatic collection, การบังคับ collection ทันที, การค้นหาจำนวนหน่วยความจำ heap ที่จัดสรรและว่างอยู่ และการปรับ allocation threshold ที่ trigger การ collection

ฟังก์ชัน

gc.enable() None

เปิดใช้งาน automatic garbage collection

gc.disable() None

ปิดใช้งาน automatic garbage collection หน่วยความจำ Heap ยังสามารถจัดสรรได้ และ garbage collection ยังสามารถเริ่มต้นด้วยตนเองได้โดยใช้ gc.collect()

gc.collect() None

รัน garbage collection

gc.mem_alloc() int

คืนค่าจำนวนไบต์ของ heap RAM ที่จัดสรรโดยโค้ด Python

ความแตกต่างจาก CPython

ฟังก์ชันนี้เป็น extension ของ MicroPython

gc.mem_free() int

คืนค่าจำนวนไบต์ของ heap RAM ที่พร้อมให้โค้ด Python จัดสรร หรือ -1 หากไม่ทราบจำนวนนั้น

ความแตกต่างจาก CPython

ฟังก์ชันนี้เป็น extension ของ MicroPython

gc.threshold(amount: int | None = None) int | None

กำหนดหรือสอบถาม GC allocation threshold เพิ่มเติม โดยปกติ collection จะถูก trigger เฉพาะเมื่อ allocation ใหม่ไม่สามารถตอบสนองได้ กล่าวคือในสภาวะหน่วยความจำเต็ม (OOM) หากเรียกฟังก์ชันนี้ นอกเหนือจาก OOM, collection จะถูก trigger ทุกครั้งหลังจากที่มีการจัดสรรไบต์ amount ไปแล้ว (รวมตั้งแต่ครั้งก่อนที่มีการจัดสรรจำนวนดังกล่าว) amount มักถูกระบุให้น้อยกว่าขนาด heap ทั้งหมด โดยมีจุดประสงค์เพื่อ trigger collection ก่อนที่ heap จะหมด และหวังว่าการ collection ที่เร็วกว่าจะป้องกันการแตกกระจายของหน่วยความจำมากเกินไป นี่คือมาตรการฮิวริสติก ซึ่งผลกระทบจะแตกต่างกันไปในแต่ละแอปพลิเคชัน รวมถึงค่าที่เหมาะสมของพารามิเตอร์ amount ด้วย

การเรียกฟังก์ชันโดยไม่มีอาร์กิวเมนต์จะคืนค่าปัจจุบันของ threshold ค่า -1 หมายความว่า allocation threshold ถูกปิดใช้งาน

ความแตกต่างจาก CPython

ฟังก์ชันนี้เป็น extension ของ MicroPython CPython มีฟังก์ชันที่คล้ายกัน - set_threshold() แต่เนื่องจากการใช้งาน GC ที่ต่างกัน signature และ semantics จึงแตกต่างกัน