MicroPython:Библиотеки/gc

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Модуль gc – управление сборщиком мусора[1]

В этом модуле реализована часть функционала соответствующего модуля CPython. Более подробно читайте в документации к CPython о модуле gc.

Функции

  • gc.enable() – включает автоматическую сборку мусора.
  • gc.disable() – отключает автоматическую сборку мусора. Память в куче по-прежнему можно выделять, а сборку мусора по-прежнему можно запускать вручную при помощи gc.collect().
  • gc.collect() – запускает сборку мусора.
  • gc.mem_alloc() – возвращает количество байтов, выделенных в куче. В CPython этой функции нет, она сделана специально для MicroPython.
  • gc.mem_free() – возвращает количество свободных байтов в куче или «-1», если оно неизвестно. В CPython этой функции нет, она сделана специально для MicroPython.
  • gc.threshold([amount]) – задает или возвращает порог выделения памяти, после которого запускается новая сборка мусора. Обычно сборка мусора запускается, только если в памяти не получается выделить место под новые данные, то есть при условии нехватки памяти, которое также называют OOM (от англ. «out-of-memory», т.е. «недостаточно памяти»). При вызове этой функции вдобавок к OOM сборка мусора также будет запускаться каждый раз, когда в куче будет выделено количество байтов, заданное в параметре amount (суммарно с тех пор, когда такое же количество байтов было выделено в прошлый раз). Значение в параметре amount обычно меньше полного размера кучи, и смысл здесь в том, чтобы запустить сборку мусора до того, как в куче закончится память, и с надеждой, что профилактическая сборка мусора предотвратит избыточную фрагментацию памяти. Это эвристический метод, эффект от которого в разных приложениях варьируется – также как и оптимальное значение в параметре amount. Вызов этой функции без аргумента вернет текущее значение порога. Если функция вернет «-1», это значит, что порог выделения памяти отключен. Эта функция сделана специально для MicroPython. В CPython есть похожая функция set_threshold(), но из-за разных реализаций сборки мусора ее сигнатура и семантика отличаются.

См.также

Внешние ссылки