gc — sterowanie odśmiecaczem pamięci

Ten moduł udostępnia interfejs do odśmiecacza pamięci sterty: włączanie lub wyłączanie automatycznego odśmiecania, wymuszanie natychmiastowego odśmiecania, sprawdzanie ilości zaalokowanej i wolnej pamięci sterty oraz dostrajanie progu alokacji wyzwalającego odśmiecanie.

Funkcje

gc.enable() None

Włącza automatyczne odśmiecanie pamięci.

gc.disable() None

Wyłącza automatyczne odśmiecanie pamięci. Pamięć sterty może być nadal alokowana, a odśmiecanie można nadal zainicjować ręcznie za pomocą gc.collect().

gc.collect() None

Uruchamia odśmiecanie pamięci.

gc.mem_alloc() int

Zwraca liczbę bajtów pamięci RAM sterty zaalokowanych przez kod Python.

Różnica względem CPythona

Ta funkcja jest rozszerzeniem MicroPython.

gc.mem_free() int

Zwraca liczbę bajtów pamięci RAM sterty dostępnych do alokacji dla kodu Python lub -1, jeśli ta ilość nie jest znana.

Różnica względem CPythona

Ta funkcja jest rozszerzeniem MicroPython.

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

Ustawia lub sprawdza dodatkowy próg alokacji GC. Zwykle odśmiecanie jest wyzwalane tylko wtedy, gdy nowa alokacja nie może zostać zaspokojona, tj. w warunku braku pamięci (OOM). Jeśli ta funkcja zostanie wywołana, oprócz OOM odśmiecanie będzie wyzwalane za każdym razem po zaalokowaniu amount bajtów (łącznie, od poprzedniego momentu zaalokowania takiej ilości bajtów). amount jest zwykle podawany jako wartość mniejsza niż pełny rozmiar sterty, z zamiarem wyzwolenia odśmiecania wcześniej niż w momencie wyczerpania sterty, oraz w nadziei, że wczesne odśmiecanie zapobiegnie nadmiernej fragmentacji pamięci. Jest to środek heurystyczny, którego efekt będzie się różnił w zależności od aplikacji, podobnie jak optymalna wartość parametru amount.

Wywołanie funkcji bez argumentu zwróci bieżącą wartość progu. Wartość -1 oznacza wyłączony próg alokacji.

Różnica względem CPythona

Ta funkcja jest rozszerzeniem MicroPython. CPython ma podobną funkcję - set_threshold(), ale ze względu na różne implementacje GC jej sygnatura i semantyka są różne.