gc --- ควบคุม garbage collector¶
โมดูลนี้ให้อินเตอร์เฟสสำหรับ heap garbage collector: การเปิดหรือปิดใช้งาน automatic collection, การบังคับ collection ทันที, การค้นหาจำนวนหน่วยความจำ heap ที่จัดสรรและว่างอยู่ และการปรับ allocation threshold ที่ trigger การ collection
ฟังก์ชัน¶
- gc.disable() None¶
ปิดใช้งาน automatic garbage collection หน่วยความจำ Heap ยังสามารถจัดสรรได้ และ garbage collection ยังสามารถเริ่มต้นด้วยตนเองได้โดยใช้
gc.collect()
- 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 จึงแตกต่างกัน