gc — управление сборщиком мусора

Этот модуль предоставляет интерфейс к сборщику мусора кучи: включение или отключение автоматической сборки, принудительный запуск немедленной сборки, запрос объёма выделенной и свободной памяти кучи, а также настройку порога выделения, запускающего сборку.

Функции

gc.enable() None

Включает автоматическую сборку мусора.

gc.disable() None

Отключает автоматическую сборку мусора. Память кучи по-прежнему можно выделять, а сборку мусора по-прежнему можно запускать вручную с помощью gc.collect().

gc.collect() None

Запускает сборку мусора.

gc.mem_alloc() int

Возвращает количество байт памяти кучи (RAM), выделенных Python-кодом.

Отличие от CPython

Эта функция является расширением MicroPython.

gc.mem_free() int

Возвращает количество байт памяти кучи (RAM), доступной для выделения Python-кодом, или -1, если это значение неизвестно.

Отличие от CPython

Эта функция является расширением MicroPython.

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

Устанавливает или запрашивает дополнительный порог выделения для GC. Обычно сборка запускается только тогда, когда новое выделение не может быть удовлетворено, то есть при нехватке памяти (OOM). Если эта функция вызвана, то в дополнение к OOM сборка будет запускаться каждый раз после того, как было выделено amount байт (суммарно, с момента предыдущего выделения такого объёма байт). amount обычно задаётся меньшим, чем полный размер кучи, с намерением запустить сборку раньше, чем куча будет исчерпана, и в надежде, что ранняя сборка предотвратит чрезмерную фрагментацию памяти. Это эвристическая мера, эффект которой будет различаться от приложения к приложению, как и оптимальное значение параметра amount.

Вызов функции без аргумента вернёт текущее значение порога. Значение -1 означает отключённый порог выделения.

Отличие от CPython

Эта функция является расширением MicroPython. В CPython есть похожая функция — set_threshold(), но из-за различий в реализациях GC её сигнатура и семантика отличаются.