gc — Steuerung des Garbage Collectors

Dieses Modul stellt eine Schnittstelle zum Heap-Garbage-Collector bereit: Aktivieren oder Deaktivieren der automatischen Sammlung, Erzwingen einer sofortigen Sammlung, Abfragen der Menge an belegtem und freiem Heap-Speicher sowie Einstellen des Allokationsschwellenwerts, der eine Sammlung auslöst.

Funktionen

gc.enable() None

Aktiviert die automatische Garbage Collection.

gc.disable() None

Deaktiviert die automatische Garbage Collection. Heap-Speicher kann weiterhin allokiert werden, und die Garbage Collection kann weiterhin manuell mit gc.collect() ausgelöst werden.

gc.collect() None

Führt eine Garbage Collection aus.

gc.mem_alloc() int

Gibt die Anzahl der Bytes an Heap-RAM zurück, die von Python-Code belegt sind.

Unterschied zu CPython

Diese Funktion ist eine MicroPython-Erweiterung.

gc.mem_free() int

Gibt die Anzahl der Bytes an Heap-RAM zurück, die zur Allokation durch Python-Code verfügbar sind, oder -1, wenn diese Menge nicht bekannt ist.

Unterschied zu CPython

Diese Funktion ist eine MicroPython-Erweiterung.

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

Setzt oder fragt den zusätzlichen GC-Allokationsschwellenwert ab. Normalerweise wird eine Sammlung nur dann ausgelöst, wenn eine neue Allokation nicht erfüllt werden kann, d. h. bei einer Speichermangel-Situation (OOM). Wird diese Funktion aufgerufen, so wird zusätzlich zu OOM jedes Mal eine Sammlung ausgelöst, nachdem amount Bytes allokiert wurden (insgesamt, seit das letzte Mal eine solche Menge an Bytes allokiert wurde). amount wird üblicherweise als kleiner als die volle Heap-Größe angegeben, mit der Absicht, eine Sammlung früher auszulösen, als wenn der Heap erschöpft ist, und in der Hoffnung, dass eine frühe Sammlung übermäßige Speicherfragmentierung verhindert. Dies ist eine heuristische Maßnahme, deren Wirkung von Anwendung zu Anwendung variiert, ebenso wie der optimale Wert des Parameters amount.

Der Aufruf der Funktion ohne Argument gibt den aktuellen Wert des Schwellenwerts zurück. Ein Wert von -1 bedeutet einen deaktivierten Allokationsschwellenwert.

Unterschied zu CPython

Diese Funktion ist eine MicroPython-Erweiterung. CPython besitzt eine ähnliche Funktion - set_threshold(), aber aufgrund unterschiedlicher GC-Implementierungen unterscheiden sich ihre Signatur und Semantik.